我现在在做一个相册
对图片压缩的要求挺高的,项目中要求不能用com.sun.image.codec.jpeg里面的类
那位高手有好的实现方法,请指点
问题补充:
单纯的改变尺寸没有问题
关键是改变尺寸后图片的质量太差
试过好多种方式jdk提供的都效果不好,有太多的毛刺
问题补充:
请问srcImageInfo是个什么对象?
问题补充:
我现在在做一个相册
对图片压缩的要求挺高的,项目中要求不能用com.sun.image.codec.jpeg里面的类
那位高手有好的实现方法,请指点
问题补充:
单纯的改变尺寸没有问题
关键是改变尺寸后图片的质量太差
试过好多种方式jdk提供的都效果不好,有太多的毛刺
问题补充:
请问srcImageInfo是个什么对象?
jimi的包能共享一下吗?我想噢那个sun网站上下的有很多错误,缺少一些类
多说了..你加我的MSN: wangxuliangboy@hotmail.com
我直接把代码给你..
ImageIO.write(image.getImages()[0], getFileExtends(imageFile), imageFile);
用ImageIO一样可以写图片..
// 获得宽度压缩比例和高度压缩比例
if (newWidth != 0) {
widthRate = (float) srcImageInfo.getWidth() / (float) newWidth;
}
if (newHeight != 0) {
heightRate = (float) srcImageInfo.getHeight() / (float) newHeight;
}
if (log.isDebugEnabled()) {
log.debug(widthRate + ":" + heightRate);
}
// 根据高和宽的压缩比例,调整高宽度
if (widthRate >= heightRate) {
newHeight = (int) (srcImageInfo.getHeight() / widthRate);
} else {
newWidth = (int) (srcImageInfo.getWidth() / heightRate);
}
// 以最清晰的方式压缩图片.会损失一些性能
BufferedImage[] srcImages = srcImageInfo.getImages();
BufferedImage[] destImages = new BufferedImage[srcImages.length];
for (int i = 0; i < destImages.length; i++) {
destImages[i] = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_RGB);
Graphics g = destImages[i].getGraphics();
g.drawImage(srcImageInfo.getImage(i), 0, 0, newWidth, newHeight, null);
}
g.dispose();
}
srcImageInfo 只是我们自己封装的一个对象..你加我MSN吧..我把包直接给你算啦..
wangxuliangboy@hotamil.com
jimi应该可以帮到你