我写了这个小调整大小的方法来缩放.png图片:
public BufferedImage resize(BufferedImage img, int newW, int newH) {
int w = img.getWidth();
int h = img.getHeight();
BufferedImage dimg = new BufferedImage(newW, newH, img.getType());
Graphics2D g = dimg.createGraphics();
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g.drawImage(img, 0, 0, newH, newW, 0, 0, w, h, null);
g.dispose();
return dimg;
}
我想让我的.png图片至少大8倍,但这会破坏图像的分辨率。有谁知道如何解决这个问题?
感谢。
答案 0 :(得分:1)
如果您希望使用Image.getscaledinstance然后渲染它,您可以做什么。例如
resizedimage = image.getScaledInstance(newW, newH, Image.SCALE_SMOOTH));
唯一的问题是你必须改变你使用Image而不是BufferedImage的方法,但这很容易。
答案 1 :(得分:0)
你可以试试这个:
BufferedImage createResizedCopy(BufferedImage img, int newW, int newH)
{
BufferedImage scaledBI = new BufferedImage(newW, newH, BufferedImage.TYPE_INT_ARGB);
Graphics2D g = scaledBI.createGraphics();
g.setComposite(AlphaComposite.Src);
g.drawImage(img, 0, 0, newW, newH, null);
g.dispose();
return scaledBI;
}
或者去看here,其他人也有同样的问题。