BufferedImage größe verändern

bl4ck29

Mitglied
ich hab schon das Forum durchsucht und auch einiges gefunden, aber bin damit nicht weiter gekommen. Ich möchte per Methode nen Image einlesen, dann width und heigth verändern und es als BufferedIamge zurückliefern...

ich lese es sofort per ImageIO als BufferedImage ein und weiss nun nicht wie ich die grösse verändern kann.
 
Kann sein, dass meine Lösung ein Umweg (und für deine Zwecke nicht zweckvoll..) ist - aber ich habe ein ähnliches Problem mal mit "getData() " gelöst.
Ich habe das Raster, des BufferedImages mit dieser Methode eingelesen, ein neues BufferedImage (mit der gewünschten Größe) erzeugt und das Raster dort hineinkopiert.
Natürlich wird mit dieser Methode die Grafik nicht skaliert, sonder nur das BufferedImage vergrößert. Anwendbar ist diese Vorgehensweise zum Beispiel wenn die Grafik nicht ins BufferedImage passt.
Hoffe das hat dir ein wenig weitergeholfen.
lg lina-
 
was heisst den nicht skaliert ?

das ist nen image was als hintergrund dienen soll (z.b.) und bei veränderter auflösung angepasst werden muss. diese anpassung wollte ich sofort nach dem einlesen durchführen. ich hab allerdings kaum nen plan von bufferedimage und sowas da ich vorher nur mal nen bild in ein panel gelesen hab und das wars.

mfg
 
nicht skaliert heisst, dass nicht die Grafik an sich, sondern nur der Container in dem sie sich befindet vergrößert oder verkleinert wird.
Wie ich schon vermutet habe ist diese Lösung für dein Problem nicht geeignet.
Aber warum versuchst du es nicht ganz einfach mit getScaledInstance(int width, int height, int hints) ?
Darfste nur das casten von Image nach BufferedImage nicht vergessen.
lg lina-
 
Code:
 Image img = null;
		try {
			img = ImageIO.read(new File(filename));
		} catch(IOException io){io.printStackTrace();}
		return (BufferedImage) img.getScaledInstance(resolutionWidth, resolutionHeight, Image.SCALE_SMOOTH);

meinst du so ? ich mein hier im Forum gelesen zu haben das es Probleme gibt wenn man Image zu BufferedImage castet, aber ich werds später mal so probieren.

danke schonmal
 
Jep - so mein ich das.
Das mit den Castingproblemen hab ich auch schonmal irgendwo gelesen - hatte aber persönlich noch keinerlei Probleme damit.
 
Hallo!

Code:
  /**
  * 
  */
 package de.tutorials;
 
 import java.awt.Image;
 import java.awt.image.BufferedImage;
 import java.io.File;
 
 import javax.imageio.ImageIO;
 
 /**
  * @author Tom
  * 
  */
 public class ImageResizingExample {
 
 	/**
 	 * @param args
 	 */
 	public static void main(String[] args) throws Exception {
 		BufferedImage img = ImageIO.read(new File("c:/Sonnenuntergang.jpg"));
 
 		Image scaledImage = img.getScaledInstance(100, 100,
 				BufferedImage.SCALE_SMOOTH);
 		BufferedImage scaledBufferedImage = new BufferedImage(100, 100,
 				BufferedImage.TYPE_INT_RGB);
 		scaledBufferedImage.getGraphics().drawImage(scaledImage, 0, 0, null);
 
 		ImageIO.write(scaledBufferedImage, "jpg", new File(
 				"c:/Sonnenuntergang_small.jpg"));
 	}
 
 }

Gruß Tom
 
Zurück