2012-07-06 11 views
6

He visto this question, pero en realidad no parece responder a la pregunta que tengo. Tengo un archivo de imagen que puede ser cualquier resolución. Necesito cargar esa imagen en un objeto BufferedImage a una resolución específica (por ejemplo, para este ejemplo, 800x800). Sé que la clase de imagen puede usar getScaledInstance() para escalar la imagen a un nuevo tamaño, pero luego no puedo encontrar la manera de recuperarla a BufferedImage. ¿Hay una forma simple de escalar una imagen almacenada en un tamaño específico?cómo escalo un BufferedImage

NOTA I No quiero escalar la imagen por un factor específico, quiero tomar una imagen y hacer un tamaño específico.

+0

** No quiero escalar la imagen por un factor específico, quiero tomar una imagen y hacer que es un tamaño específico ** Esto se puede hacer fácilmente: 'factor = originalSize \ newSize;' – GETah

Respuesta

8

Algo como esto? :

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

Puede crear un nuevo BufferedImage del tamaño que desee y luego realizar una pintura escalado de la imagen original en el nuevo:

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

ver este sitio web Link1

O Este Link2

+0

Si bien esto puede responder teóricamente a la pregunta, [sería preferible] (// meta.stackoverflow.com/q/8259) incluir las partes esenciales de la respuesta aquí, y proporcione el enlace para referencia. –

+0

Gracias por la entrada @KarlRichter. Definitivamente voy a actualizar la respuesta pronto. – codeDEXTER

Cuestiones relacionadas