java图片压缩,传入图片的byte [],返回图片压缩后的byte[]。

JasperReport图片处理全解析:从静态嵌入到动态加载的实战指南 在企业级报表开发中,图片的动态嵌入与显示是提升数据可视化效果的关键技术。其核心原理在于报表引擎如何根据配置,在运行时或设计时加载并渲染图片资源。掌握静态嵌入与动态加载两种方案,能有效解决生产环境中图片不显示、内存溢出等常见问题,对于构建稳定、可维护的报表系统具有重要价值。本文聚焦JasperReport这一主流Java报表引擎,深入探讨了通过参数(Parameter)和字段(Field)传递图片流(InputStream)的技术细节,并提供了从类路径、数据库BLOB字段及网络URL加载图片的完整工程实践方案 阅读详情

import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import javax.imageio.IIOImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter;
以上是需要的类,下面是图片压缩方法
/**
* 2014年1月3日10:52:49
* 传入byte[],传出byte[]
* @author liangpeng
* @param imageByte 图片字节数组
* @param width 生成小图片宽度
* @param height 生成小图片高度
* @param gp 是否等比缩放
* @return
*/
public static byte[] compressPic(byte[] imageByte, int width, int height, boolean gp) {
byte[] inByte = null;
try { 
ByteArrayInputStream byteInput = new ByteArrayInputStream(imageByte);
Image img = ImageIO.read(byteInput);
// 判断图片格式是否正确 
if (img.getWidth(null) == -1) {
return inByte;
} else { 
int newWidth; int newHeight; 
// 判断是否是等比缩放 
if (gp == true) { 
// 为等比缩放计算输出的图片宽度及高度 
double rate1 = ((double) img.getWidth(null)) / (double) width + 0.1; 
double rate2 = ((double) img.getHeight(null)) / (double) height + 0.1;
// 根据缩放比率大的进行缩放控制 
double rate = rate1 > rate2 ? rate1 : rate2; 
newWidth = (int) (((double) img.getWidth(null)) / rate); 
newHeight = (int) (((double) img.getHeight(null)) / rate); 
} else { 
newWidth = width; // 输出的图片宽度 
newHeight = height; // 输出的图片高度 
} 
BufferedImage tag = new BufferedImage((int) newWidth, (int) newHeight, BufferedImage.TYPE_INT_RGB); 
img.getScaledInstance(newWidth, newHeight, Image.SCALE_SMOOTH);
/*
* Image.SCALE_SMOOTH 的缩略算法 生成缩略图片的平滑度的
* 优先级比速度高 生成的图片质量比较好 但速度慢
*/ 
tag.getGraphics().drawImage(img.getScaledInstance(newWidth, newHeight, Image.SCALE_SMOOTH), 0, 0, null);

ImageWriter imgWrier;
ImageWriteParam imgWriteParams;
// 指定写图片的方式为 jpg
imgWrier = ImageIO.getImageWritersByFormatName("jpg").next();
imgWriteParams = new javax.imageio.plugins.jpeg.JPEGImageWriteParam(null);
//       // 要使用压缩,必须指定压缩方式为MODE_EXPLICIT
//       imgWriteParams.setCompressionMode(imgWriteParams.MODE_EXPLICIT);
//       // 这里指定压缩的程度,参数qality是取值0~1范围内,
//       imgWriteParams.setCompressionQuality((float)45217/imageByte.length);
//                        
//       imgWriteParams.setProgressiveMode(imgWriteParams.MODE_DISABLED);
//       ColorModel colorModel = ColorModel.getRGBdefault();
//       // 指定压缩时使用的色彩模式
//       imgWriteParams.setDestinationType(new javax.imageio.ImageTypeSpecifier(colorModel, colorModel
//               .createCompatibleSampleModel(100, 100)));
//将压缩后的图片返回字节流
ByteArrayOutputStream out = new ByteArrayOutputStream(imageByte.length);
imgWrier.reset();
// 必须先指定 out值,才能调用write方法, ImageOutputStream可以通过任何 OutputStream构造
imgWrier.setOutput(ImageIO.createImageOutputStream(out));
// 调用write方法,就可以向输入流写图片
imgWrier.write(null, new IIOImage(tag, null, null), imgWriteParams);
out.flush();
out.close();
byteInput.close();
inByte = out.toByteArray();

} 
} catch (IOException ex) { 
ex.printStackTrace();
} 
return inByte;
}


vhr 微人事系统安装与部署教程(SpringBoot + Vue 项目实战) vhr(微人事)是一个开源的人力资源管理系统项目。系统采用前后端分离架构,主要技术栈包括:后端:MyBatis前端:VueElement UIAxios数据库:MySQL系统通常包含以下模块:员工管理部门管理职位管理薪资管理权限管理系统管理整体功能已经接近企业级后台系统。vhr(微人事)是一个非常经典的开源人力资源管理系统项目,基于SpringBoot + Vue 前后端分离架构。系统包含:员工管理部门管理权限管理薪资管理。 阅读详情

相关推荐

【计算机三级-数据库技术】操作题大题(第1套)

从触发器的语法中可知,【1】处应该填写的是执行触发器的表,【2】处应该填写指定在表或视图上执行哪些数据修改语句时将激活触发器的关键字。使用FOR或AFTER选顶定义的触发器为后触发器,即只有在引发触发器执行的语句中的操作都已成功执行,并且所有的约束检查也成功完成后,才执行触发器。转换成新的独立的模式,模式的属性由联系本身的属性及两个实体的键构成,主键由两端实体的键组合而成。实体的转换:在从ER图转换为关系模式时,一个实体转换成一个关系模式,实体的属性就是关系模式的属性,实体的键就是关系的主键。

放纵小开爱的博客 1103

java 中 image 和 byte[] 相互转换

 java 中 image 和 byte[] 相互转换 java 中 image 和 byte[] 相互转换可恶的…………其实也挺好的 只是把好不容易写出来的东西记下来,怕忘了…… 下面,我来介绍一个简单的 byte[] to image, 我们只需要一个存储了图片信息的二进制串(byte[]) 然后,这样:

zhouhaochen的专栏 1万+

5种主流触觉传感器对比:GelSight、DIGIT、Taxim、GelSlim和TACTO如何选?

本文深度解析了GelSight、DIGIT、Taxim、GelSlim和TACTO五款主流触觉传感器的技术原理与核心特性。通过对比视觉传感与电学传感两大技术路径,为机器人灵巧抓取、精密检测等应用场景提供清晰的选型决策指南,帮助开发者根据项目需求在分辨率、响应速度、集成度与成本之间找到最佳平衡。

Black的专栏 932

java中图片和字节数组相互转化

java中图片和字节数组相互转化 方案一:使用ImageIO来实现 将图片转化为字节数组 /** * 通过图片路径将图片文件转化为字符数组 * * @param url 图片路径 * @return byte[] */ public static byte[] imageToBytes(String url){ ByteArrayOutputStream byteOutput = new ByteArrayOutputStream();

weixin_46178942的博客 7171

C#实战:5分钟搞定西门子S7-1200 PLC数据读写(S7netplus保姆级教程)

本文详细介绍了如何使用C#和S7netplus库快速实现与西门子S7-1200 PLC的数据读写。从环境准备、连接管理到数据读写高级技巧,提供了保姆级教程和实战方案,帮助开发者绕过常见陷阱,提升工业自动化项目的开发效率。

weixin_28432777的博客 283

Win10离线安装.net framework 3.5全攻略:镜像匹配与DISM命令实战(附错误0x8024402c解决方案)

本文详细解析了在Windows 10系统中离线安装.NET Framework 3.5的完整流程与核心难点。重点阐述了如何精准匹配系统版本与安装镜像,并提供了使用DISM命令进行离线安装的实战步骤。针对常见的错误代码0x8024402c,文章深入剖析了其根源,并给出了系统级的排查与解决方案,特别适合企业内网运维人员参考。

weixin_29299807的博客 662

Java ImageIO 类详解

Java 中的 ImageIO 类是 Java 标准库中用于处理图像的一个非常常用的 API,它提供了读取和写入多种常见图像格式的功能,如 JPEG、PNG、BMP、GIF 等。开发者可以通过 ImageIO 类轻松地读取和写入图像,而无需考虑底层的细节。本文将全面详细地介绍 Java 中的 ImageIO 类的使用方法。

兴趣是最好的老师,勤能补拙 1万+

GMSL2摄像头接入避坑指南:从FMC子卡配置到V4L2调用的完整流程(附Ubuntu20.04实测)

本文详细解析了GMSL2摄像头接入的全流程,从FMC子卡配置到V4L2调用的完整指南。基于XC7Z100平台实测经验,提供了硬件选型、带宽优化、Linux驱动配置及高分辨率采集的实战技巧,帮助开发者规避常见问题,提升系统稳定性与性能。

weixin_33737774的博客 419

Java将图片作为二进制进行保存和读取

package com.suncn.common.util; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java

2万+

对冲策略与马丁结合ea的编程实践(五)核心是把两个品种合成一个新品种

在外汇、数字货币、期货交易甚至赌博中,马丁策略、网格策略是最常用的策略,也是最容易被理解的策略,但是如何克服单边行情、极端行情,是使用马丁策略最为头疼的事情,如加大间距、加大资金量,只能缓解,并不能根本解决这样的情况,所以使用时大部分时候都心里没底。 有没有一种正确的思路,让行情控制在震荡范围以内呢,这是今天我要向大家分享的一个思路,那就是对冲。大家看下图: 大家可以看到欧美(EURUSD)和镑美(GBPUSD),这两个品种,大部分时候走势是一致的,那么我们有没有可能把他们两个品种进行一下合成,比如买0.

omidsky的博客 3742

(10)三相三绕组变压器的建模仿真

建立了三相三绕组变压器组的Simulink仿真模型,通过实例进行了仿真计算。

weixin_45670943的博客 1146

ImageIO.read无法读取byte字节图像数据且返回null?关联:原始像素数据,Pointer指针里的图片数据

ImageIO.read无法读取byte字节图像数据且返回空? 问题场景: Java通过jna访问c版的SDK里的接口(对接海康摄像头,图片存储在Pointer指针里) 图片数据类型为:原始数据(没有经过编码处理) 问题例子: 标记: 1.这个pImageBuf在java里定义的是Poinert类型 pImageBuf的值即为图像数据(重点:在这里它是一种 原始数据,并不是文件格式) 2.转换为byte类型 3.将这个byte类型图像数据存到字节数组输入流 4.ImageIO.read读取这个字节数组输入

迪迦奥特曼的博客 2459

【Python进阶】VSCode Python开发完全指南:从环境配置到高效调试

本文通过15个实战案例,系统讲解VSCode进行Python开发的环境配置、编码技巧、调试方法及性能优化,帮助初学者快速构建专业开发环境。

赶紧的博客 3772

Java将图片压缩质量后返回一个byte数组

项目为了降低存储生成,需要将图片质量压缩大小不变,并且全程要在内存中进行,所以我写了下面的方法。方法中传入参数有两个一个是图片的byte数组,一个是压缩质量(压缩质量在0-1之间)。处理完毕后会返回一个新的byte数组出来 /** * 图片压缩质量然后返回一个byte数组 * * @param imageByte 图片byte数组 * @param quality 压缩质量,在0-1之间, * @return 返回的字节数组 */ public static byte[] compressP

qq_42623400的博客 9363

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

java开发等比例压缩照片,传入byte数组,返回byte数组

public static byte [] scaleImage(byte [] photo) { try { ByteArrayInputStream in = new ByteArrayInputStream(photo); //将b作为输入流; BufferedImage image = ImageIO.read...

笑语轻柔 887

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

鸿蒙开发中如何实现图片的压缩,并将其转换为byte数组进行存储?

在上述示例中,首先创建ImageSource对象,并利用其获取图片的基本信息。然后创建PixelMap对象,并将其压缩为JPEG格式,存入ByteArrayOutputStream。在鸿蒙开发中,可以使用鸿蒙提供的BitmapFactory、ByteArrayOutputStream和Bitmap等类来实现图片的压缩和转换为byte数组进行存储。使用时,可以调用compressImageToByteArray方法传入图片文件路径和压缩质量参数,即可得到压缩后的byte数组。

qq_31532979的贺公子之数据科学与艺术博客,致力于科技向善,拥抱开源,要用技术的影响力来领导团队,而不是威权和职位! 1040

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

用ndk实现android的图片压缩

最近在看了动脑学院的图片优化之后,感觉通过ndk来实现的压缩,压缩比例还是很好的 我们知道android的图片显示离不开bitmap,而在android开发中避免不了对图片的压缩处理,当然bitmap有自带的压缩方法,调用bitmap的compress方法就可以实现简单的压缩,但是这种压缩出来的图片从清晰度上来说,效果不是很好,原因在于这种压缩的底层处理是由google的skia图片处理引擎来...

HuiMengNiTian的专栏 1037

stream 图片流压缩 util

很多应用场景下,需要进行图片压缩,以防止图片过大占用空间。本文提供图片压缩的util,即插即用。直接上代码 /** * 压缩图片 * @param inStream 图片流 * @return byte 数组 */ public static byte[] compressImage(InputStream inStream){ ByteArrayOutputStream out = new ByteArrayOutputStream..

CQHaveADream的博客 671

java上传图片尺寸修改和质量压缩

package com.zity.frame.util; /** * 缩略图实现,将图片(jpg、bmp、png、gif等等)真实的变成想要的大小 */ import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGImageEncoder; import net.sourcefor...

qq_37202864的博客 906

springboot上传图片到阿里云OSS同时进行压缩(使用thumbnailator)

首先导入thumbnailator包,关于这个的使用可以看别的博文。 pom文件引入: <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>3.10.2</version> </

吹灭读书灯 一身都是月的博客 1185

android 图片处理 resize 探秘(图片缩放、压缩问题)

关于Android的图片压缩 最近有项目需要压缩图片(300 x 300)传入服务器展示 但是效果却不近人情,到这个size 图片就糊掉了 ,但是IOS却没问题经过反复查证IOS和android 在底层的OnDraw方法用的是同一个包,但是IOS在底层绘制的时候把一些属性都加上(smooth化、锐化操作)了所以大小和质量都比android 质量高一些。 对于这样的问题下android本身目前...

jpl1880的博客 2000

android 处理图片工具

import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import android.graphics.Bitmap; im

YiRong 705

Android 图片工具类整理

1.将图片转换成圆形 /** * 转换图片成圆形 * @param bitmap 传入Bitmap对象 * @return */ public static Bitmap toRoundBitmap(Bitmap bitmap) { int width = bitmap.getWidth(); int height

importSUC的专栏 773

图片工具类

import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import android.graphics.Bitmap;

水兵的专栏 480

分享一个Android中的图片处理工具

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://terryblog.blog.51cto.com/1764499/791516   package com.wireme.activity; import java.io.ByteArrayOutputStream; import java.io.File;

fso918的专栏 1070

android图片处理方法(不断收集中)

//压缩图片大小 public static Bitmap compressImage(Bitmap image) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); image.compress(Bitmap.CompressFormat.JPEG, 100, baos);//质量压缩方法,这里100表示不压

gundumw100的专栏 299
上一篇: 配置fastDFS 一个tracker管理多个Storage Group
下一篇: java 发送邮件
三易的博客
博客等级 码龄15年 42粉丝 89原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值