java 图片 边读取边压缩

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 图片 边读取边压缩相关的知识,希望对你有一定的参考价值。

java 能实现 图片边读取边压缩吗? 因为服务器内存太小,大图片没法整个读取后再压缩。就想能不能实现边读取边压缩,每次读取 一个固定的长度。压缩后出去后再读再压再写。求大神回复!

我想这样不行吧, 至少要一张图片一张图片的压缩。如果你读固定长度,一张图片没读完就压缩肯定会有问题追问

就是针对一张图,就想着选读取一字节。压缩完 再读再压。有没有能实现呢。

追答

只能针对一张图片压缩,怎么可能一个字节一个字节压缩。。

追问

好吧!!!!放弃。。。 = =。

参考技术A 是用GraphicsMagick 压缩的嘛追问

这是什么。。? 就是前台提交过来的图片,后面要压缩一张缩略图,可是服务器内存太小。无法直接读取进内存。所以才有这种想法。

追答

压缩是怎么压缩的。

追问

流,读进来一段。压缩完再读再压缩。是这么想的。不知道如何实现。

追答

。。。压缩是怎么压缩的嘛。。流读是读啊。怎么压啊

追问

。。。。是啊。。这是我想问的。该怎么做呢。。!!!

追答

先要下个GraphicsMagick

/**
* 图片压缩工具类
*/
public class GraphicsMagickUtils
public static void drawImg(String picPath, String drawPicPath, int width, int height) throws IOException, InterruptedException, IM4JavaException
IMOperation op = new IMOperation();
op.addImage();
//按原图比例压缩
// op.resize(width, height);
//感叹号表示不按原图比例压缩,按指定像素压缩
String raw = width+"x"+height+"!";
op.addRawArgs("-sample", raw);
//清晰度越高图片大小就越大
// op.addRawArgs("-quality", "100");
//添加文字
// op.font("Arial").fill("red").draw("text 100,100 www.taobao.com");
op.quality(85d);
op.addImage();
//IM4JAVA是同时支持ImageMagick和GraphicsMagick的,如果为true则使用GM,如果为false支持IM。
ConvertCmd cmd = new ConvertCmd(true);
String osName = System.getProperty("os.name").toLowerCase();
if(osName.indexOf("win") >= 0) //linux下不要设置此值,不然会报错
cmd.setSearchPath("D://GraphicsMagick-1.3.20-Q8");

cmd.setErrorConsumer(StandardStream.STDERR);
cmd.run(op, picPath , drawPicPath);


java可以读取多大txt文件

参考技术A 如果边读取边处理,无需驻留内存,可以读取无限大的txt文件。 参考技术B java读取txt文件内容。可以作如下理解: 首先获得一个文件句柄。File file = new File(); file即为文件句柄。两人之间连通电话网络了。接下来可以开始打电话了。 通过这条线路读取甲方的信息:new FileInputStream(file) 目前这个信息已经读进来本回答被提问者采纳

以上是关于java 图片 边读取边压缩的主要内容,如果未能解决你的问题,请参考以下文章

java可以读取多大txt文件

aiohttp 异步http请求-5.下载大文件边下载边保存(节省内存)

Java小坑

bzoj2035: [2009国家集训队]数据读取问题

Android 去黑边工具

读取数量不定的数据输入