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;
}相关推荐
【计算机三级-数据库技术】操作题大题(第1套)
从触发器的语法中可知,【1】处应该填写的是执行触发器的表,【2】处应该填写指定在表或视图上执行哪些数据修改语句时将激活触发器的关键字。使用FOR或AFTER选顶定义的触发器为后触发器,即只有在引发触发器执行的语句中的操作都已成功执行,并且所有的约束检查也成功完成后,才执行触发器。转换成新的独立的模式,模式的属性由联系本身的属性及两个实体的键构成,主键由两端实体的键组合而成。实体的转换:在从ER图转换为关系模式时,一个实体转换成一个关系模式,实体的属性就是关系模式的属性,实体的键就是关系的主键。
java 中 image 和 byte[] 相互转换
java 中 image 和 byte[] 相互转换 java 中 image 和 byte[] 相互转换可恶的…………其实也挺好的 只是把好不容易写出来的东西记下来,怕忘了…… 下面,我来介绍一个简单的 byte[] to image, 我们只需要一个存储了图片信息的二进制串(byte[]) 然后,这样:
5种主流触觉传感器对比:GelSight、DIGIT、Taxim、GelSlim和TACTO如何选?
本文深度解析了GelSight、DIGIT、Taxim、GelSlim和TACTO五款主流触觉传感器的技术原理与核心特性。通过对比视觉传感与电学传感两大技术路径,为机器人灵巧抓取、精密检测等应用场景提供清晰的选型决策指南,帮助开发者根据项目需求在分辨率、响应速度、集成度与成本之间找到最佳平衡。
java中图片和字节数组相互转化
java中图片和字节数组相互转化 方案一:使用ImageIO来实现 将图片转化为字节数组 /** * 通过图片路径将图片文件转化为字符数组 * * @param url 图片路径 * @return byte[] */ public static byte[] imageToBytes(String url){ ByteArrayOutputStream byteOutput = new ByteArrayOutputStream();
C#实战:5分钟搞定西门子S7-1200 PLC数据读写(S7netplus保姆级教程)
本文详细介绍了如何使用C#和S7netplus库快速实现与西门子S7-1200 PLC的数据读写。从环境准备、连接管理到数据读写高级技巧,提供了保姆级教程和实战方案,帮助开发者绕过常见陷阱,提升工业自动化项目的开发效率。
Win10离线安装.net framework 3.5全攻略:镜像匹配与DISM命令实战(附错误0x8024402c解决方案)
本文详细解析了在Windows 10系统中离线安装.NET Framework 3.5的完整流程与核心难点。重点阐述了如何精准匹配系统版本与安装镜像,并提供了使用DISM命令进行离线安装的实战步骤。针对常见的错误代码0x8024402c,文章深入剖析了其根源,并给出了系统级的排查与解决方案,特别适合企业内网运维人员参考。
Java ImageIO 类详解
Java 中的 ImageIO 类是 Java 标准库中用于处理图像的一个非常常用的 API,它提供了读取和写入多种常见图像格式的功能,如 JPEG、PNG、BMP、GIF 等。开发者可以通过 ImageIO 类轻松地读取和写入图像,而无需考虑底层的细节。本文将全面详细地介绍 Java 中的 ImageIO 类的使用方法。
GMSL2摄像头接入避坑指南:从FMC子卡配置到V4L2调用的完整流程(附Ubuntu20.04实测)
本文详细解析了GMSL2摄像头接入的全流程,从FMC子卡配置到V4L2调用的完整指南。基于XC7Z100平台实测经验,提供了硬件选型、带宽优化、Linux驱动配置及高分辨率采集的实战技巧,帮助开发者规避常见问题,提升系统稳定性与性能。
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
对冲策略与马丁结合ea的编程实践(五)核心是把两个品种合成一个新品种
在外汇、数字货币、期货交易甚至赌博中,马丁策略、网格策略是最常用的策略,也是最容易被理解的策略,但是如何克服单边行情、极端行情,是使用马丁策略最为头疼的事情,如加大间距、加大资金量,只能缓解,并不能根本解决这样的情况,所以使用时大部分时候都心里没底。 有没有一种正确的思路,让行情控制在震荡范围以内呢,这是今天我要向大家分享的一个思路,那就是对冲。大家看下图: 大家可以看到欧美(EURUSD)和镑美(GBPUSD),这两个品种,大部分时候走势是一致的,那么我们有没有可能把他们两个品种进行一下合成,比如买0.
(10)三相三绕组变压器的建模仿真
建立了三相三绕组变压器组的Simulink仿真模型,通过实例进行了仿真计算。
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读取这个字节数组输入
【Python进阶】VSCode Python开发完全指南:从环境配置到高效调试
本文通过15个实战案例,系统讲解VSCode进行Python开发的环境配置、编码技巧、调试方法及性能优化,帮助初学者快速构建专业开发环境。
Java将图片压缩质量后返回一个byte数组
项目为了降低存储生成,需要将图片质量压缩大小不变,并且全程要在内存中进行,所以我写了下面的方法。方法中传入参数有两个一个是图片的byte数组,一个是压缩质量(压缩质量在0-1之间)。处理完毕后会返回一个新的byte数组出来 /** * 图片压缩质量然后返回一个byte数组 * * @param imageByte 图片byte数组 * @param quality 压缩质量,在0-1之间, * @return 返回的字节数组 */ public static byte[] compressP
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...
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数组。
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图片处理引擎来...
stream 图片流压缩 util
很多应用场景下,需要进行图片压缩,以防止图片过大占用空间。本文提供图片压缩的util,即插即用。直接上代码 /** * 压缩图片 * @param inStream 图片流 * @return byte 数组 */ public static byte[] compressImage(InputStream inStream){ ByteArrayOutputStream out = new ByteArrayOutputStream..
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...
springboot上传图片到阿里云OSS同时进行压缩(使用thumbnailator)
首先导入thumbnailator包,关于这个的使用可以看别的博文。 pom文件引入: <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>3.10.2</version> </
android 图片处理 resize 探秘(图片缩放、压缩问题)
关于Android的图片压缩 最近有项目需要压缩图片(300 x 300)传入服务器展示 但是效果却不近人情,到这个size 图片就糊掉了 ,但是IOS却没问题经过反复查证IOS和android 在底层的OnDraw方法用的是同一个包,但是IOS在底层绘制的时候把一些属性都加上(smooth化、锐化操作)了所以大小和质量都比android 质量高一些。 对于这样的问题下android本身目前...
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
Android 图片工具类整理
1.将图片转换成圆形 /** * 转换图片成圆形 * @param bitmap 传入Bitmap对象 * @return */ public static Bitmap toRoundBitmap(Bitmap bitmap) { int width = bitmap.getWidth(); int height
图片工具类
import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import android.graphics.Bitmap;
分享一个Android中的图片处理工具
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://terryblog.blog.51cto.com/1764499/791516 package com.wireme.activity; import java.io.ByteArrayOutputStream; import java.io.File;
android图片处理方法(不断收集中)
//压缩图片大小 public static Bitmap compressImage(Bitmap image) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); image.compress(Bitmap.CompressFormat.JPEG, 100, baos);//质量压缩方法,这里100表示不压
1103



被折叠的 条评论
为什么被折叠?



