2012-07-06 35 views
6

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

注意我我不想通过特定的因素来缩放图像,我想要拍摄图像并制作具体尺寸。

+0

**我不想按特定因子缩放图像,我要拍摄图像,并为特定的大小**这可以很容易地完成:'factor = originalSize \ newSize;' – GETah 2012-07-06 18:00:40

回答

8

像这样的事情? :

/** 
* 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; 
} 
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(); 
1

看到这个网站Link1

或者 这Link2

+0

虽然这可能在理论上回答这个问题,[这将是更可取的](/ meta.stackoverflow.com/q/8259)包括的基本部分答案在这里,并提供参考链接。 – 2016-12-04 21:30:38

+0

感谢您输入@KarlRichter。我一定会尽快更新答案。 – codeDEXTER 2017-01-24 11:56:40