7

我已经查看了这个问题,但它似乎并没有真正回答我的问题。我有一个图像文件,可能是任何分辨率。BufferedImage我需要将该图像以特定分辨率加载到对象中(例如,对于本示例,800x800)。我知道 Image 类可以用来getScaledInstance()将图像缩放到新大小,但是我不知道如何将它恢复为BufferedImage. 有没有一种简单的方法可以将缓冲图像缩放到特定大小?

注意II 不想按特定因子缩放图像,我想拍摄图像并制作特定尺寸。

4

3 回答 3

9

像这样的东西?:

 /**
 * Resizes an image using a Graphics2D object backed by a BufferedImage.
 * @param srcImg - source image to scale
 * @param w - desired width
 * @param h - desired height
 * @return - the new resized image
 */
private BufferedImage getScaledImage(Image srcImg, int w, int h){
    BufferedImage resizedImg = new BufferedImage(w, h, BufferedImage.TRANSLUCENT);
    Graphics2D g2 = resizedImg.createGraphics();
    g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
    g2.drawImage(srcImg, 0, 0, w, h, null);
    g2.dispose();
    return resizedImg;
}
于 2012-07-06T18:02:19.677 回答
4

您可以创建一个所需大小的新 BufferedImage,然后将原始图像按比例绘制到新图像中:

BufferedImage resizedImage = new BufferedImage(new_width, new_height, BufferedImage.TYPE_INT_ARGB); 
Graphics2D g = resizedImage.createGraphics();
g.drawImage(image, 0, 0, new_width, new_height, null);
g.dispose();
于 2012-07-06T18:01:50.500 回答
1

看这个网站 Link1

或者这个链接2

于 2012-07-06T18:03:12.527 回答