如何限制生成图片的大小

Rainbow686 2008-01-31 11:49:39
对于一张图片,大小为100k,尺寸为200 * 200
现在我想让图片尺寸还是200 * 200,但是大小为50k,如何做到?
我知道可以通过JPEGImageEncoder和JPEGEncodeParam.setQuality(0.5f,true)来做到压缩jpg图像的质量,从而达到压缩大小,可是我无法控制生成图片大小刚好是50k,请问怎么做到呢?
...全文
538 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
smzen 2011-05-17
  • 打赏
  • 举报
回复
encoder_param.setQuality(Constants.IMAGE_COMPRESS_RATE,false); 不用
qianquan 2010-08-19
  • 打赏
  • 举报
回复
这个要求太高了吧??
chenweionline 2008-02-18
  • 打赏
  • 举报
回复
我看了一下PS,另存JPEG时调节的是图像品质,它有个label显示根据当前图像和你选择的品质计算出压缩后大致的文件大小,并没有设置文件大小的选项啊?
我用的是PhotoShop CS2。
Rainbow686 2008-02-18
  • 打赏
  • 举报
回复
to:chenweionline
但是photoshop的确可以做到设置压缩成多大,你可以看那看photoshop的“另存为”,里面就可以设置存储图片的大小。
liujun999999 2008-02-13
  • 打赏
  • 举报
回复
这个要求太无聊了吧
chenweionline 2008-02-08
  • 打赏
  • 举报
回复
你如果了解一下JPEG格式就应该知道,不能指定压缩后的图像文件的精确大小。
kockoc 2008-02-08
  • 打赏
  • 举报
回复
编程王代码库改版了
http://code-search.kingofcoder.com
大家看看
sunwei_07 2008-02-05
  • 打赏
  • 举报
回复
1楼,老紫竹,我想请教下,你们说的是宽度和高度缩小吧
我也想知道LZ的该怎么做,容量变小,宽度和高度不变

难道他的容量是按高度和宽度的比例来算的?还是分辨率的数字?不懂,求教了
guoqiangone 2008-02-02
  • 打赏
  • 举报
回复
up,1楼不能满足吗?
来学习的
niko7 2008-02-01
  • 打赏
  • 举报
回复
我想,楼主最初的图片已经不是bmp了吧,换句话说,已经是经过图像类的压缩了吧。
那么如果一定要使文件个头变小,图片尺寸必须变小。

目前还没有那么神奇的图像压缩算法,可以在我们通用的压缩算法之上提供那么好的效果。
老紫竹 2008-01-31
  • 打赏
  • 举报
回复
是我无法控制生成图片大小刚好是50k

那个刚好要求太高了,我想目前还没有工具能做到。难道49.9K不行吗?哈哈哈哈! 开个玩笑了。。。

楼上的代码是1/4压缩,你要调整一下才行。
olivesoup 2008-01-31
  • 打赏
  • 举报
回复
重点看打***号那一行,应该是你想要得

public void compressImage(FormFile formFile, String path, String _fileName) {
try {
Image src = javax.imageio.ImageIO.read(formFile.getInputStream()); // construct the Image Object
int width=src.getWidth(null); // get the width
int height=src.getHeight(null); // get the height

// Compress Image
BufferedImage tag = new BufferedImage(width/2,height/2,BufferedImage.TYPE_INT_RGB);
***tag.getGraphics().drawImage(src,0,0,width/2,height/2,null); // 我这是压缩为原来的1/2
FileOutputStream out=new FileOutputStream(path + _fileName);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam encoder_param = encoder.getDefaultJPEGEncodeParam(tag);
encoder_param.setQuality(Constants.IMAGE_COMPRESS_RATE,false); // Image compress rate
encoder.setJPEGEncodeParam(encoder_param);
encoder.encode(tag);
out.close();
return true;
} catch(Exception e) {
Logger.getLogger(this.getClass().getName()).error(e.getMessage(), e);
return false;
}
}

Rainbow686 2008-01-31
  • 打赏
  • 举报
回复
自己顶一下,有没有别的办法?
Rainbow686 2008-01-31
  • 打赏
  • 举报
回复
这样做出来的图片尺寸就变成原来的一半了吧,我想要的是图片尺寸还是以前那么大,比如说原来是:with=200 height=200 大小是100k。调整后with=200 height=200 大小是50k左右。有办法么?

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧