网站首页 > 博客文章 正文
在对接第三方平台上传商品时,会遇到平台上传图片有大小限制,聪明如我so easy,压缩一下图片再上传,但用JAVA图片压缩时,本地好好的,但在服务器实测竟然出现变色问题,在网上查了很多资料,各种方法都尝试过也无法解决。具体尝试过方案我就不多说,自行百度,都是泪,关键词:【JAVA图片压缩变色】。
最终在老运维的指导下,发现了一款越用越顺手的工具,可以绕过JAVA处理图片产生的各种问题。唯一缺点项目依赖了系统功能,在扩展程序时需要注意。
ImageMagick
ImageMagick可以调整图像大小,翻转,镜像,旋转,变形,剪切和变换图像,调整图像颜色,应用各种特殊效果或绘制文本,线条,多边形,椭圆和贝塞尔曲线。
ImageMagick是免费软件,可以即用型二进制分发形式提供,也可以作为源代码提供,您可以在开放应用程序和专有应用程序中使用,复制,修改和分发它们。它是在派生的Apache 2.0 许可下分发的。
可以运行平台:Linux, Windows, Mac Os X, iOS, Android OS, and others.
免费,多平台 ,搞他。
安装方法 下载 下一步 下一步 下一步 能不思考就不思考,有问题再说。
废话不多说,直接测试效果(具体有好多用法,自行百度一下)
直接上命令 压缩大小
magick convert 1.jpg -quality 80 2.jpg
压缩前后数据效果对比
在JAVA项目中使用
JAVA库中有 im4java、jmagick 等库,使用比较复杂,我更加倾向于使用命令行的方式去执行处理
引入hutool,不得不说,优秀的框架。
File file = null,tempFile = null;
try {
tempFile = File.createTempFile("image_temp", ".jpg");
file = File.createTempFile("image", ".jpg");
downloadPicture( url , tempFile);
if(isWindows()){ //判断平台 由于服务器用的是6 开发用7 命令行有变化
Process process = RuntimeUtil.exec( "magick" , "convert", tempFile.getAbsolutePath(),"-quality" ,"80" , file.getAbsolutePath() );
process.waitFor(30L,TimeUnit.SECONDS);
}else{
Process process = RuntimeUtil.exec("convert", tempFile.getAbsolutePath(),"-quality" ,"80" , file.getAbsolutePath() );
process.waitFor(30L,TimeUnit.SECONDS);
}
} catch (Exception e) {
logger.info("url={},e={}",url,e.getMessage());
e.printStackTrace();
} finally {
}
搞掂。发版完美运行,收工。
彩蛋
附上小实验,长图切图功能
根据图片的宽度 按照高1000px等比例切,全程自动完成,免计算,方便。
BufferedImage bfimg = ImageIO.read(new FileInputStream(sourceImg));
Process process = RuntimeUtil.exec( "magick" , "convert",
sourceImg.getAbsolutePath() ,"-crop" ,
bfimg.getWidth() + "x1000" ,
tgFile.getAbsolutePath() + "\\"+code+".jpg");
System.out.println( info );
process.waitFor(30L,TimeUnit.SECONDS);
猜你喜欢
- 2024-11-12 基于SpringBoot 的CMS系统,拿去开发企业官网真香(附源码)
- 2024-11-12 J2eeFAST 开源平台(j2ee开发工具)
- 2024-11-12 Java项目中用它来代替一半的反射使用,爽到飞起!
- 2024-11-12 反射用不好真的会影响代码执行效率!
- 2024-11-12 基于AbstractProcessor扩展MapStruct自动生成实体映射工具类
- 2024-11-12 Java面试问题(一)—— java 基础(java面试问题大全及答案大全)
- 2024-11-12 一个轻量级的Java快速开发平台快速开发项目并交付「接私活利器」
- 2024-11-12 电商系统中的 ID 是如何生成的?(电商注册账号是什么)
- 2024-11-12 用了这两款插件,同事再也不说我代码写的烂了
- 2024-11-12 优雅的替换第三方jar包中的类!#编程
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)