Java图片缩放裁剪问题

实迷途其未远觉今是而昨非 发布于 2013/07/31 10:04
阅读 981
收藏 3

jdk自带的ImageIO,即使质量设置最高1,按照原来大小缩放,得到的图片感觉效果很差。

有没有什么好点的解决方案?

加载中
0
魔力猫
实迷途其未远觉今是而昨非
实迷途其未远觉今是而昨非
这个用过,效果还是有点不太好,看了这个软件下面的讨论,纯Java方案的确效果不会太好
0
z
zjwzcnjsy
自己写个。简单点的图片缩放:行列删除(先模糊一下效果更好)。
z
zjwzcnjsy
拿bmp来说,图像文件格式了参考http://lhbyron.bokee.com/652956.html rgb颜色空间来说,图象数据阵列可以理解为2维数组,那么图像缩小,可以对这个数组操作,简单的算法就是行列删除
实迷途其未远觉今是而昨非
实迷途其未远觉今是而昨非
自己写也要根据jdk自带的来弄,jdk的基类是用什么来处理呢,如果用ImageIO的话效果不是很好,后面你说的行列删除不太明白,能说详细点吗?
0
罪恶的花生
罪恶的花生
ByteArrayInputStream in = new ByteArrayInputStream(fileContents); 
BufferedImage bi = ImageIO.read(in);
if(bi.getHeight()>height || bi.getWidth()>width){
	ColorModel dstCM = bi.getColorModel();
	BufferedImage dst = new BufferedImage(dstCM, dstCM.createCompatibleWritableRaster( width,height), dstCM.isAlphaPremultiplied(), null);
	Image scaleImage = bi.getScaledInstance(width,height, Image.SCALE_AREA_AVERAGING );
	Graphics2D g = dst.createGraphics();
	g.drawImage(scaleImage,0,0,width,height, null );
	g.dispose();
	ImageIO.write((BufferedImage) dst, "png", os);
}else{
	ImageIO.write(bi, "png", os);
}
这样效果已经不错咯~
0
dedenj
dedenj

alibaba的开源项目,可以试试

http://code.alibabatech.com/wiki/display/SIMPLEIMAGE/Developer+Guide

git地址

0
OliverLiu
OliverLiu
推荐用,graphicsmagick ,淘宝就是用此来压缩裁剪图片的哦
返回顶部
顶部