2012-07-06 77 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