2012-07-06 18 views
6

Ho visto this question, ma sembra che non risponda effettivamente alla domanda che ho. Ho un file immagine che potrebbe essere una qualsiasi risoluzione. Ho bisogno di caricare quell'immagine in un oggetto BufferedImage a una risoluzione specifica (per esempio, 800x800). So che la classe Image può utilizzare getScaledInstance() per ridimensionare l'immagine in una nuova dimensione, ma non riesco quindi a capire come tornare a un BufferedImage. C'è un modo semplice per ridimensionare un'immagine con buffer su una dimensione specifica?come ridimensionare un BufferedImage

NOTA I Non voglio ridimensionare l'immagine per un fattore specifico, voglio prendere un'immagine e fare è una dimensione specifica.

+0

** Non voglio per scalare l'immagine di un fattore specifico, voglio prendere una foto e fare è una dimensione specifica ** Questo può essere fatto facilmente: 'factor = originalSize \ newSize;' – GETah

risposta

8

qualcosa di simile? :

/** 
* 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

È possibile creare una nuova BufferedImage della dimensione che si desidera e quindi eseguire una vernice in scala dell'immagine originale in quello nuovo:

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

vedono questo sito Link1

O Questo Link2

+0

Mentre questo può teoricamente rispondere alla domanda, [sarebbe preferibile] (// meta.stackoverflow.com/q/8259) per includere le parti essenziali di la risposta qui e fornire il link per riferimento. –

+0

Grazie per l'input @KarlRichter. Aggiornerò sicuramente la risposta al più presto. – codeDEXTER