我调整了图像大小,但质量很低。我听说过双三次插值但我无法得到任何实现代码。这是我的代码:
private static BufferedImage resize(BufferedImage image, int width, int height)
{
int w = image.getWidth(), h = image.getHeight();
int type = image.getType() == 0? BufferedImage.TYPE_INT_ARGB : image.getType();
BufferedImage resizedImage = new BufferedImage(width, height, type);
Graphics2D g = resizedImage.createGraphics();
g.setComposite(AlphaComposite.Src);
g.setRenderingHint(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY);
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BICUBIC);
//g.drawImage(image, 0, 0, width, height, null);
g.scale((double)width/w,(double)height/h);
g.drawRenderedImage(image, null);
g.dispose();
return resizedImage;
}
我希望在上采样和下采样后获得最佳质量。
答案 0 :(得分:1)
只有在需要通过某种非整数比例因子调整大小时才需要双立方插值和其他插值方案。您可能缺少的是,您需要在下采样之前过滤图像(缩小时)或在上采样之后过滤(扩展时)避免混淆伪影,这是一个完全不同的问题。这适用于整数和非整数比例因子。