【发布时间】:2011-06-25 07:10:01
【问题描述】:
这是原图:http://rank.my/public/images/uploaded/orig-4193395691714613396.png
在这里它被缩小到 300x225:
http://rank.my/public/images/uploaded/norm-4193395691714613396.png
在这里它被缩小到 150x112:
http://rank.my/public/images/uploaded/small-4193395691714613396.png
如您所见,300x225 看起来很糟糕,而 150x112 看起来很糟糕。这是我用来缩小图像的代码:
private static BufferedImage createResizedCopy(final BufferedImage source, final int destWidth,
final int destHeight) {
final BufferedImage resized = new BufferedImage(destWidth, destHeight, source.getType());
final Graphics2D bg = resized.createGraphics();
bg.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
bg.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
bg.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
final float sx = (float) destWidth / source.getWidth();
final float sy = (float) destHeight / source.getHeight();
bg.scale(sx, sy);
bg.drawImage(source, 0, 0, null);
bg.dispose();
return resized;
}
我在这里做错了什么?图像缩放不必特别快,质量绝对比速度更重要。我是否使用了错误的技术?
【问题讨论】:
-
@MusiGenesis:我认为你删除的答案非常好,我希望你能取消删除它。
-
链接已失效,请使用 imgur 或类似内容托管 :)
-
链接现已备份 - 抱歉
-
又是死链接。请直接将它们添加到帖子中,或使用 imgur。谢谢!
标签: java graphics image-processing graphics2d