SWT: Inhalt eines Canvas als JPG speichern

Hathor

Grünschnabel
Hallo,

habe da ein Problem und benötige Hilfe.
Möchte den Inhalt (Thumbnail eines vorhandenen Bildes) meines Canvas als JPG abspeichern.
Habe sowas ähnliches bereits unter AWT/Swing gemacht, möchte aber jetzt auf SWT umstellen und habe dabei meine Probleme.

Hier der Code unter AWT/SWT:
Code:
public void saveImage(String dateiName, int breite, int hoehe){
		
                                float quality = 0.9f;
		int w = breite;    
		int h = hoehe;    
		BufferedImage bi = new BufferedImage(w,h, BufferedImage.TYPE_INT_RGB);
		Graphics2D big2d = bi.createGraphics(); 
		canvas.paint(big2d); 
		try {      
			FileOutputStream fos = new FileOutputStream(new File(dateiName));      
			JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fos);      
			JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bi);      
			param.setQuality(quality, false);      
			encoder.setJPEGEncodeParam(param);      
			encoder.encode(bi);    
		} 
		catch (Exception ex) {      
			ex.printStackTrace();    
		}  
	 }
Gibt es da irgendeine Möglichkeit, das es auch mit SWT läuft?
Ich hatte mir gedacht, dass man die Zeilen 7 - 9 umformen muss, bin aber leider zu keinem positiven Ergebnis gekommen!
 
Zuletzt bearbeitet:
Probier' mal diese Zeile, statt des "com.sun.*"-Packages:

Code:
ImageIO.write(buffImg, "JPEG", new File(sFileName)); //javax.imageio.ImageIO
CU schnuffie
 
Hallo!

Versuchs mal hiermit:
Code:
package de.tutorials;

import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.graphics.ImageLoader;
import org.eclipse.swt.widgets.Display;

public class Test49 {

	public static void main(String[] args) {
		ImageLoader loader = new ImageLoader();
		ImageData[] data = loader.load("c:/Beispiel.jpg");
		ImageData imageData = data[0];
		Display display = new Display();
		Image img = new Image(display, imageData);
		ImageData scaledImageData = imageData.scaledTo(120,90);
		loader.data[0] = scaledImageData;
		loader.save("c:/Besipiel_001.jpg",scaledImageData.type);
		
		loader.data = null;
		img.dispose();
		display.dispose();
		//...
	}
}

gruß Tom
 
Hallo Thomas,

vielen Dank für deine Hilfe, funktioniert hervorragend - genauso wie ich es mir vorstelle!
MfG, Hathor



Hallo Schnuffie,

habe als erstes Thomas Variante ausprobiert. Bedanke mich aber auch bei dir und werde deine Variante auch noch austesten. Danke!
MfG, Hathor
 

Neue Beiträge

Zurück