# Erzeugen eines Bildes aus einem Bytearray, drehen und speichern



## Looky (16. Februar 2010)

Hallo,

ich habe ein Client Server system und benutze den Tomcat. Ich bekomme von einem 3. Server ein Image als bytearray.

Nun muss ich aus dem Bytearray ein Image generieren, dieses dann um 90 ° drehen und anschließend über response.getOutpustream zurückschreiben.

Ich habe schon alles mögliche versucht, laufe aber immer wieder gegen eine wand und verzweifle langsam. Ich kann keine zuzsätzlichen loibs wie JAI nutzen...

Habt ihr ein Code Snippet, welches ihr mir großzügigerweise zur Verfügung stellen würdet?
Mfg
Christian


----------



## Kai008 (16. Februar 2010)

http://www.tutorials.de/forum/swing...tes-image-drehen-transparenz-beibehalten.html
http://www.tutorials.de/forum/java/...g-war-remote-anwendung-corba.html#post1353824


----------



## Looky (16. Februar 2010)

super, du hast mir 2 links kopiert. gesucht habe ich übrigens schon.

mein problem ist, dass ich z.B. bei diesem Code:


```
ByteArrayInputStream in = new ByteArrayInputStream(datastream);
				
		        BufferedImage image = ImageIO.read(in);
		        
		        AffineTransform affineTransform = AffineTransform.getRotateInstance(
		                Math.toRadians(90.0),
		                image.getWidth() / 2,
		                image.getHeight() / 2);
		        BufferedImage rotatedImage = new BufferedImage(image.getWidth(), image
		                .getHeight(), image.getType());
		        Graphics2D g = (Graphics2D) rotatedImage.getGraphics();
		        g.setTransform(affineTransform);
		        g.drawImage(image, 0, 0, null);
		        
		        ImageIO.write(rotatedImage, "gif", out);
```

kein Bild zurückbekomme. (Out ist response.getOutputstrema und datastream is das bytearray vom Bild..)


----------



## Kai008 (16. Februar 2010)

Schau mal, ob dir eine Exception fliegt. Wenn ja, ersetze image.getType() mit BufferedImage.TYPE_INT_RGB oder ARGB für transparente Bilder.


----------



## Looky (16. Februar 2010)

kommt keine Exception, es passiert einfach gar nichts.
im Firebug sacht er mir, es kämen grad mal 20 bytes zurück


----------



## Thomas Darimont (18. Februar 2010)

Hallo,

schau mal hier:

```
package de.tutorials.web.server;

import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.InputStream;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ImageRotationServlet extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		InputStream inputStream = getClass().getResourceAsStream("img2.png");
		BufferedImage image = ImageIO.read(inputStream);
		BufferedImage rotatedImage = new BufferedImage(image.getHeight(), image.getWidth(), image.getType());

		Graphics2D g2d = (Graphics2D) rotatedImage.getGraphics();
		g2d.rotate(Math.toRadians(90), rotatedImage.getWidth() / 2,	rotatedImage.getWidth() / 2);
		g2d.drawImage(image, 0, 0, null);
		g2d.dispose();
		
		ImageIO.write(rotatedImage, "png", resp.getOutputStream());
	}
}
```

Gruß Tom


----------

