# image speichern



## stevepflc (22. Jan 2007)

hallo zusammen.
ich habe ein Image und möchte dieses in einen ordner images speichern.
wie kann ich die machen?

code ausschnitt:
//-----------------------------------------


```
double new_im_w= 400;
double new_im_h= 400 / factor;
		
int int_im_w = (int) new_im_w;
int int_im_h = (int) new_im_h;
		
Image scaledimage = org_image.getScaledInstance(int_im_w,int_im_h, Image.SCALE_SMOOTH);
```
//-----------------------------------------

danke für eure hilfe


----------



## thE_29 (22. Jan 2007)

ImageIO.write(bild, "png" oder "jpeg", new File("C:\\bild.xyz"));


----------



## stevepflc (22. Jan 2007)

die funktion verlangt ein (RenderedImage) ich habe aber bis jetzt nur ein Image.
was nun???


----------



## stevepflc (22. Jan 2007)

Jetzt sieht es so aus. und funktioniert noch nicht!
Fehler!!!???

double new_im_w= 400;
double new_im_h= 400 / factor;

int int_im_w = (int) new_im_w;
int int_im_h = (int) new_im_h;

//Image scaledimage = org_image.getScaledInstance(int_im_w,int_im_h, Image.SCALE_SMOOTH);
		RenderedImage renderedImage = (RenderedImage) org_image.getScaledInstance(int_im_w,int_im_h, Image.SCALE_SMOOTH);

		try {
			ImageIO.write(renderedImage, "jpeg", new File("C:\\bild.xyz"));
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();


----------



## thE_29 (22. Jan 2007)

```
BufferedImage      bimage = new BufferedImage(scaledImage.getWidth(null), scaledImage.getHeight(null), BufferedImage.TYPE_INT_RGB);
    Graphics g = bimage.createGraphics();
    // Paint the image onto the buffered image
    g.drawImage(image, 0, 0, null);
    g.dispose();
```


----------



## stevepflc (22. Jan 2007)

es entsteht ein schwarzes viereck mit den richtigen maßen!???


		double new_im_w= 400;
		double new_im_h= 400 / factor;

		int int_im_w = (int) new_im_w;
		int int_im_h = (int) new_im_h;

		Image scaledImage = org_image.getScaledInstance(int_im_w,int_im_h, Image.SCALE_SMOOTH);
		BufferedImage bimage = new BufferedImage(scaledImage.getWidth(null), scaledImage.getHeight(null), BufferedImage.TYPE_INT_RGB);
	    Graphics g = bimage.createGraphics();  
	    g.drawImage(bimage, 0, 0, null); 
	    g.dispose();
		try {
			ImageIO.write(bimage, "jpeg", new File("C:\\bild.jpeg"));
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}


----------



## thE_29 (22. Jan 2007)

probier mal png als Typ und nicht jpeg!

Und noch zu probieren ist ob es vielleicht mit BufferedImage.TYPE_INT_ARGB geht!


----------



## stevepflc (22. Jan 2007)

ich habs hin bekommen. 
vielen dank.

der code:

		double new_im_w= 400;
		double new_im_h= 400 / factor;

		int int_im_w = (int) new_im_w;
		int int_im_h = (int) new_im_h;

		Image scaledImage = org_image.getScaledInstance(int_im_w,int_im_h, Image.SCALE_SMOOTH);

		BufferedImage outImg = new BufferedImage(int_im_w, int_im_h,
				BufferedImage.TYPE_INT_RGB);

		Graphics g = outImg.getGraphics();		
		g.drawImage(scaledImage, 0, 0, null);		
		g.dispose();

		try {
			ImageIO.write(outImg, "jpg", new File("images/IMG_3316_b_small.jpg"));
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}


----------



## Wyvern (25. Mai 2007)

Cool! Suchfunktion hilft tatsächlich. ^^

1. Funktioniert diese Lösung mit jpg, gif und png? 
2. Ist es irgendwie möglich VOR dem ImageIO.write rauszufinden, wie groß die Datei wird? 
Falls nicht, wie komm ich danach elegant an die Dateigröße?


----------



## merlin2 (25. Mai 2007)

Nach dem Schreiben müsste man doch eigentlich über die Klasse File an die Dateigröße kommen, oder?


----------



## Wyvern (25. Mai 2007)

Ja, aber ich halte es nicht für sehr performant das File mit ImageIO.write zu schreiben, und es danach gleich wieder in ein Fileobjekt zu laden nur um die Größe rauszufinden. 
Geht das nicht irgendwie eleganter?


----------



## quiety (6. Jun 2007)

Hallo,

ich habe das gleiche Problem und wollte nun das obige Beispiel ausprobieren.
Eclipse meckert bei mir allerdings bei der Funktion  org_image mit der Fehlermeldung "org_image cannot be resolved".

Muss ich dafür vielleicht noch irgendetwas importieren?

Die Eclipse-Funktion "Organise imports" funktioniert nämlich leider nicht in diesem Fall.


----------



## solnze (6. Jun 2007)

vom ueberfliegen wuerd ich sagen mit org_image ist das original image gemeint. das musste schon vorher noch erzeugen (als object in java) sonst kann man es ja auch nicht woandershinspeichern und/oder veraendern.


----------

