2012-07-06 14 views
6

Ich habe this question angesehen, aber es scheint nicht wirklich die Frage zu beantworten, die ich habe. Ich habe eine Bilddatei, die eine beliebige Auflösung haben kann. Ich muss dieses Bild in ein BufferedImage Objekt mit einer bestimmten Auflösung laden (sagen wir für dieses Beispiel 800x800). Ich weiß, dass die Bildklasse verwenden kann, um das Bild auf eine neue Größe zu skalieren, aber ich kann dann nicht herausfinden, wie man es zu einem BufferedImage zurückbekommt. Gibt es eine einfache Möglichkeit, ein gepuffertes Bild auf eine bestimmte Größe zu skalieren?Wie skaliere ich ein BufferedImage

HINWEIS I Ich möchte das Bild nicht um einen bestimmten Faktor skalieren, ich möchte ein Bild machen und ist eine bestimmte Größe.

+0

** Ich möchte nicht das Bild um einen bestimmten Faktor skalieren, möchte ich ein Bild nehmen und machen eine bestimmte Größe ** Dies kann leicht durchgeführt werden: 'factor = originalSize \ newSize;' – GETah

Antwort

8

So etwas wie das? :

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

Sie können eine neue BufferedImage der Größe, die Sie wollen, erstellen und dann eine skalierte Farbe des Originalbildes in die neue durchführen:

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

sehen diese Website Link1

Oder Diese Link2

+0

Während dies theoretisch die Frage beantworten könnte, [wäre es vorzuziehen] (// meta.stackoverflow.com/q/8259), die wesentlichen Teile von die Antwort hier, und stellen Sie den Link als Referenz zur Verfügung. –

+0

Danke für die Eingabe @KarlRichter. Ich werde die Antwort bald aktualisieren. – codeDEXTER

Verwandte Themen