Atitit. 图像处理jpg图片的压缩 清理垃圾图片 java版本

Atitit. 图像处理jpg图片的压缩  清理垃圾图片 java版本

 

1. 清理图片压缩图片尺寸 1

2. 所以要使用ImageWriter 1

3. Thumbnails质量压缩builder.outputQuality(0.9); 2

4. attilax框架的处理 code 2

5. 到一篇文章提到如何控制jpg图片后压缩的质量 3

6. 参考 4

 

1. 清理图片压缩图片尺寸

目标::300kb>>>10kb..

处理流程:::scale,outputQuality(0.5)

裁剪crop,only 顶一半....

在上传到个云盘,cp处理..sysn

 

处理出来个mini版本的pic folder..在跟个ori 大的尺寸文件夹sync..删除别的不要的...

 

中间走不个不要的图片删除出k...

 

作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://blog.csdn.net/attilax

 

 

2. 所以要使用ImageWriter

 

 

ImageIO虽然能支持选定格式的输出

但是不能自己设置质量

 

iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); // 设置可否压缩 

 

 

 

3. Thumbnails质量压缩builder.outputQuality(0.9);

00001. builder.outputQuality(0.9); //参数是浮点数,0-1之间

质量压缩

00001. builder.outputQuality(0.9); //参数是浮点数,0-1之间

 

 

4. attilax框架的处理 code

atibrow

public   void scale4clr(String jpg, String deboxJpgint width)

throws IOException {

Image img = ImageIO.read(new File(jpg));

 

int width2 = img.getWidth(null);

if(width2<width+2)

{System.out.println("--skip:"+jpg);

return;

}

//int wid = width2 - (border * 2);

double scale_perst=(double)width/(double)width2;

double nowhit=img.getHeight(null);

double nowwit=scale_perst*width2;

int nowhit_haf=(intimg.getHeight(null)/2;

//int hit = img.getHeight(null) - (border * 2);

Thumbnails.of(jpg).scale(scale_perst).sourceRegion(Positions.TOP_LEFT, (intwidth2nowhit_haf).outputFormat("jpg").outputQuality(0.5).toFile(deboxJpg);

}

 

5. 到一篇文章提到如何控制jpg图片后压缩的质量


http://www.universalwebservices.net/web-programming-resources/java/adjust-jpeg-image-compression-quality-when-saving-images-in-java/
重点我这里提出来说一下
ImageWriter writer; // 自己获取 ImageWriter 对象
ImageWriteParam iwp = writer.getDefaultWriteParam();
iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
// 参数为0和1
// 1表示设置最小的压缩以保持最大的图片质量 
iwp.setCompressionQuality(1);
File file = new File(OUTPUTFILE);
FileImageOutputStream output = new FileImageOutputStream(file);
writer.setOutput(output);
IIOImage image = new IIOImage(BUFFEREDIMAGE, null, null);
// 写入图片
writer.write(null, image, iwp);
writer.dispose() 

 

6. 参考

JAVA 图像处理库 Thumbnails-强子IT博客.htm

图像按质量压缩、转换为字符数组小结 - kfhzy的专栏 - 博客频道 - CSDN.NET.htm

如何用java 调整jepg图片压缩? - Java - 知乎.htm

java中图片按质量压缩的再一次小结 - - ITeye技术网站.htm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 中可以使用 ImageIO 类库对 JPG 图片进行压缩处理,具体步骤如下: 1. 读取原始图像文件: ```java File file = new File("原始图片路径"); BufferedImage image = ImageIO.read(file); ``` 2. 创建一个 BufferedImage 对象,并设置它的大小和类型: ```java int width = image.getWidth(); int height = image.getHeight(); BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); ``` 3. 使用 Graphics2D 对象将原始图像绘制到 BufferedImage 对象中: ```java Graphics2D g2d = bufferedImage.createGraphics(); g2d.drawImage(image, 0, 0, width, height, null); g2d.dispose(); ``` 4. 创建一个 ByteArrayOutputStream 对象,将 BufferedImage 对象写入其中: ```java ByteArrayOutputStream os = new ByteArrayOutputStream(); ImageIO.write(bufferedImage, "jpg", os); ``` 5. 使用 ImageWriter 对象对数据进行压缩: ```java ImageWriter writer = ImageIO.getImageWritersByFormatName("jpg").next(); ImageWriteParam param = writer.getDefaultWriteParam(); param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); param.setCompressionQuality(0.5f); // 压缩质量,范围为 0.0f 到 1.0f writer.setOutput(ImageIO.createImageOutputStream(os)); writer.write(null, new IIOImage(bufferedImage, null, null), param); ``` 6. 将压缩后的图像数据写入文件: ```java byte[] compressedData = os.toByteArray(); FileOutputStream fos = new FileOutputStream("压缩图片路径"); fos.write(compressedData); fos.close(); ``` 注意:在进行压缩时,压缩质量设置为 1.0f 表示不进行压缩,设置为 0.0f 表示最大程度压缩。一般情况下,可以将压缩质量设置在 0.5f 左右,使得压缩后的图像既能够满足大小需求,又不至于失真过度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值