导航:首页 > 文件处理 > im4java压缩图片

im4java压缩图片

发布时间:2025-02-02 08:07:14

㈠ graphicsmagick在java中怎么使用

服务器端图片上传逻辑改版,将文件自己压缩成3份然后上传至某云进行存储。
选择GraphicsMagick+IM4Java,放弃并发能力弱的ImageMagick+Jmagick。
网上可供学习GraphicsMagick与IM4Java的资料是在太少,翻来覆去就那么几篇,碰到异常只能一遍又一遍的研读官方文档!这也是我写这篇文章的原因之一。
im4java参考资料:
1)请详见Developer's Guide: http://im4java.sourceforge.net/docs/dev-guide.html

2)github上im4java的源码:https://github.com/Widen/im4java

GraphicsMagick参考资料:
1)http://www.graphicsmagick.org

先在本地安装使用测试,觉得性能还OK的话,再放到测试服务器上部署测试实际性能。本地环境是win,win下的GM(GraphicsMagick)就很好安装了,与普通软件安装无异。
二)使用IM4Java:
瞧Developer's Guide中的“Before you begin: Setting up the Environment”内容,大意是使用之前先设置工具的工具(当然压缩图片的工具,名字叫gm)的搜索路径,并说明了这几种设置方式的差别。
比如win下的安装路径,假如我安装的路径是D:\GraphicsMagick-1.3.19-Q16,则代码为:
String myPath="D:\\GraphicsMagick-1.3.19-Q16";

ProcessStarter.setGlobalSearchPath(myPath);

注:我们不能在linux服务器中这么写代码,linux直接就设置环境变量:export PATH=$PATH:/abc...,其中/abc是你的GM工具所在路径,比如我的是/home/db/roderickyu/soft/bin

简单用法就直接看文档吧,我这里写几个文档里不太容易读出来的内容:
压缩时可以直接添加本地的图片,比如:
IMOperation op = new IMOperation();
op.addImage("D:\\test.jpg"); // 输入要压缩的文件路径
op.resize(640); // 多番尝试后才知道这是限定width,height等比缩放
op.addImage("D:\\newTest.jpg"); // 压缩后的文件的输出路径,当然可以没有扩展名!

还有一种是对输入流进行压缩,比如官方文档中:
IMOperation op = new IMOperation();
op.addImage("-"); // read from stdin
op.addImage("tif:-"); // write to stdout in tif-format
代码中tif是指按照tif格式进行压缩,但是变化不明显(而且压缩后的大小与size大小不成正比),很容易给初学者造成是不是代码不好使的挫败感!将tif换成jpg压缩的大小变化就明显了。这是一个坑!

回到这个需求来,我们只有一个输入流,怎么把这个输入流压缩成3份大小不等的文件呢?
将输入流转化成byte数组,就不存在流被第一个文件读完第二三的文件没有流可以读时报异常。。。empty input file...
代码为:
InputStream fileStream = ......
int total = fileStream.available();
byte[] bs = new byte[total];
fileStream.read(bs);

按照GM的官方文档安装GM时失败,后才得解:安装路径不是当前linux用户的可读写权限内的路径,换成当前身份可读写的路径呗或者换登入身份呗~
最后测试,发现性能相当优异!

与im4java压缩图片相关的资料

热点内容
程序员三年前工资多少 浏览:702
pc端c语言编译工具 浏览:19
护理知识app怎么做 浏览:26
我的世界服务器如何跨版本 浏览:910
益盟正版主力识别公式源码 浏览:488
温州程序员兼职网站 浏览:715
csgo控制台命令大全指令表 浏览:728
小米盒子连接服务器地址 浏览:363
文档怎么压缩进一个文件夹 浏览:82
cnn新闻app从哪里下载 浏览:68
杀戮命令精通 浏览:891
如何查魔兽世界角色在哪个服务器 浏览:40
压缩气罐免责说明 浏览:910
为什么sim连接不了服务器 浏览:29
如何注册豆瓣app 浏览:556
屏膜找图算法 浏览:535
我的世界服务器怎么给别人游戏币 浏览:938
tis服务器怎么设置 浏览:499
分段压缩包怎样解压手机 浏览:329
app绑定的网站如何更改 浏览:345