java图片压缩库调研

news/2025/3/20 3:27:36/

方案

效果

部署方式

说明

支持功能

收费/免费

TinyPng

JPG:10

PNG:10

Maven引入

1. 网站在线压缩免费,单张,手工;

2. API接入,申请appid,每天50张免费,后续收费,实际是到远端rest调用

裁剪、压缩、水印等

每月500张免费;

500-10000:0.009$/张

>10000:0.002$/张

JDeli

JPG:10

PNG:9

Maven引入

本地SDK,直接调用,对PNG实际是用quant算法进行优化

裁剪、压缩、水印等

收费

Thumbnailator

JPG:9

Png:1

Maven引入

本地SDK,JPG压缩可以做到60%以上,可以控制压缩后分辨率是否变化

PNG不对位深做优化,压缩率一般20%以下甚至负优化

裁剪、压缩、水印等

免费

OpenViewer

PNG:9

JPG:1

Maven引入

1. 6.6.14版本中的image包,是抠了JDeli的代码,其它版本都没有,所以实际是收费软件的压缩效果;

2. 压缩后分辨率不变,降低位深方式降低PNG的存储空间

裁剪、压缩、水印等

免费

ImgProxy

NA

java私有化部署,http访问

主要是在图床上,resize会修改图片分辨率;怀疑网宿的resize功能应该是用的这个

不修改分辨率压缩效果一般

裁剪

免费

OpenCV

JPG:10

PNG:10

JNI调用

JNI调用,需要每台部署主机都安装opencv库

裁剪、压缩、水印等

免费

Pngquant

PNG:9

JNI调用

JNI调用,需要每台部署主机安装pngquant

压缩

免费

Aspose

JPG:9

PNG:1

Maven引入

类似thumbnailator,不过对有透明度的PNG压缩后会有黑底

裁剪、压缩、水印等

免费

考虑本次使用场景主要是尽量在保持分辨率的场景下减少图片存储空间,所以最终方案:

jpg使用thumbnailator压缩

png使用OpenViewer压缩

附:png压缩对比(0%说明是负优化,代码中对负优化的不压缩)

原始大小

thumbnalator

OpenViewerFX

tinypng

thumbnalator节省

OpenViewerFX节省

TinyPng节省

2,168,352

2,085,019

672,035

559,541

3.84%

69.01%

74.20%

2,181,431

2,181,431

594,118

520,370

0.00%

72.76%

76.15%

1,417,911

1,290,266

523,687

446,200

9.00%

63.07%

68.53%

1,253,352

1,110,166

441,109

447,969

11.42%

64.81%

64.26%

865,274

765,531

219,903

198,021

11.53%

74.59%

77.11%

834,557

780,779

265,746

230,452

6.44%

68.16%

72.39%

494,425

494,425

129,102

137,757

0.00%

73.89%

72.14%

84,612

84,612

26,110

24,128

0.00%

69.14%

71.48%

82,193

67,519

28,490

28,260

17.85%

65.34%

65.62%

3,853

3,853

2,242

1,436

0.00%

41.81%

62.73%


http://www.ppmy.cn/news/310533.html

相关文章

web应用常见7大安全漏洞,浅析产生的原因!

今天整理了关于web前端的干货知识,web应用常见的有哪些安全漏洞呢,这些漏洞产生的原因又是什么呢?这些问题你想过吗? 1.SQL 注入 SQL 注入就是通过给 web 应用接口传入一些特殊字符,达到欺骗服务器执行恶意的 SQL 命…

对比学习+Prompt+FGSM实现文本分类

本文主要是基于Robert的文本分类任务,在此基础上考虑融合对比学习、Prompt和对抗训练来提升模型的文本分类能力,我本地有SST-2数据集的train.txt、test.txt、dev.txt三个文件,每个文件包含文本内容和标签两列,基于pytorch实现。 …

Servlet请求转发的实现

一、请求转发 OneServlet package com.lpx.controller;import javax.servlet.*; import javax.servlet.http.*; import java.io.IOException;public class OneServlet extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse r…

IPX/SPX 协议

IPX协议    说明:全称Internetwork Packet Exchange(网间数据包交换),IPX协议是Novell NetWare自带的最底层网络协议,主要用来控制局域网内或局域网之间数据包的寻址和路由,只 负责数据包在局域网中的传…

r5 5600x配什么主板 r5 5600x配什么内存

AMD锐龙R5 5600X基于7纳米全新的Zen3架构设计,R5 5600X拥有6核12线程,基础频率为3.7GHz,加速频率为4.6GHz,三级缓存为32MB,最大的内存支持3200MHz,TDP功耗为65W,无内置核显,支持PCI-…

EBS 销售订单登记提示错误 ORA-00604 LPX-00225

订单登记时,提示错误: 程序包 ASO_ORDER_FEEDBACK_UPDATE_PVT 过程 UPDATE_NOTICE 中出现错误 ORA-00604: 递归 SQL 级别 2 出现错误 ORA-31011: XML 语法分析失败 ORA-19213: 行 439 LPX-00225: 结束元素标记 "ASO_LINE_TYPE" 与起始元素标…