Erzeugen eines Bildes aus einem Bytearray, drehen und speichern

Looky

Erfahrenes Mitglied
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
 
super, du hast mir 2 links kopiert. gesucht habe ich übrigens schon.

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

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..)
 
Schau mal, ob dir eine Exception fliegt. Wenn ja, ersetze image.getType() mit BufferedImage.TYPE_INT_RGB oder ARGB für transparente Bilder.
 
kommt keine Exception, es passiert einfach gar nichts.
im Firebug sacht er mir, es kämen grad mal 20 bytes zurück
 
Hallo,

schau mal hier:
Java:
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
 
Zurück