BufferedImage an DataHandler übergeben

DR4GON

Grünschnabel
Hallo Tutorials.de - Community,

ich schreibe derzeit an einem kleinen Web Service basierend auf dem Axis2 Framework. Dabei soll zuerst ein Diagramm aus der JFreeChart Libary gezeichnet und im Anschluss als Bild an den Client gesendet werden.
Nun habe ich leider das Problem, dass ich es nicht hinbekomme ein Objekt vom Typ DataHandler zu erzeugen ohne hierbei das zuvor erzeugte BufferedImage als File ablegen zu müssen.

Zum besseren Verständnis habe ich hierzu einmal ein kleines Beispiel erstellt. Stellen an denen Fehler auftreten habe ich rot markiert.

Code:
DefaultPieDataset data = new DefaultPieDataset();
data.setValue("Category 1", 43.2);
data.setValue("Category 2", 27.9);
data.setValue("Category 3", 79.5);
		
JFreeChart chart = ChartFactory.createPieChart("Sample Pie Chart", data, true, true, false);
BufferedImage picture = chart.createBufferedImage(640, 480);
		
ImageWriter writer = ImageIO.getImageWritersByFormatName("jpg").next(); 
ImageOutputStream output = ImageIO.createImageOutputStream(); 
writer.setOutput(output);
	    
ImageWriteParam iwparam = new JPEGImageWriteParam(Locale.getDefault()); 
iwparam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT) ; 
iwparam.setCompressionQuality(1F); 
	    
writer.write(null, new IIOImage(picture, null, null), iwparam); 
output.flush();
writer.dispose();
output.close();

DataHandler handler = new DataHandler();

ImageType image = new ImageType();
image.setName(token);
image.setData(handler);

Kann mir hier vielleicht jemand sagen, wie es möglich ist den DataHandler mit einem im Speicher erzeugten, also nicht persistenten, Bild zu beliefern, ohne erst noch ein File anlegen zu müssen? Ich müsste dieses dann nämlich immer wieder löschen, was natülich nicht sonderlich elegant wäre.

Schöne Grüße

DR4GON
 
Zuletzt bearbeitet:
Zurück