如何限制生成图片的大小

Rainbow686 2008-01-31 11:49:39
对于一张图片,大小为100k,尺寸为200 * 200
现在我想让图片尺寸还是200 * 200,但是大小为50k,如何做到?
我知道可以通过JPEGImageEncoder和JPEGEncodeParam.setQuality(0.5f,true)来做到压缩jpg图像的质量,从而达到压缩大小,可是我无法控制生成图片大小刚好是50k,请问怎么做到呢?
...全文
462 点赞 收藏 14
写回复
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左右。有办法么?
回复 点赞
发动态
发帖子
Java SE
创建于2007-09-28

3.4w+

社区成员

30.7w+

社区内容

Java 2 Standard Edition
社区公告
暂无公告