import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.image.BufferedImage;
import java.awt.image.CropImageFilter;
import java.awt.image.FilteredImageSource;
import java.awt.image.ImageFilter;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class Bild extends JFrame {
private static final long serialVersionUID = 7713300478208924716L;
private File bildDatei; // C:\temp\report.png
private Image bild; // screenshot
private Image cropImage; // zurechtgeschnittenes Bild
JOptionPane jop = new JOptionPane();
public void foo() {
this.bild = getBildInClipboard();
erstelleDatei();
this.cropImage = makeCropImage();
ladeBildInDatei(this.cropImage);
setBildInClipboard(this.bild); // funktioniert
// setBildInClipboard(this.cropImage); // funzt nicht
jop.showMessageDialog(this, "Der Screenshot wurde bearbeitet und unter C:\\temp\\report.png gespeichert.");
System.exit(0);
}
public Image getBildInClipboard() {
Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable tr = clip.getContents(null);
Object content;
try {
content = tr.getTransferData(DataFlavor.imageFlavor);
return (Image) content;
} catch (UnsupportedFlavorException e) {
jop.showMessageDialog(this, "Es ist kein Bild in der Zwischenablage! \n" + e);
System.exit(0);
} catch (IOException e) {
jop.showMessageDialog(this,e);
System.exit(0);
}
return null;
}
public void setBildInClipboard(Image img) {
ImageTransferable it = new ImageTransferable(img);
Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable tr = it;
clip.setContents(tr, null);
}
public Image makeCropImage() {
ImageFilter cropFilter = new CropImageFilter( 100, 135, 1100, 800 );
return createImage( new FilteredImageSource(bild.getSource(),cropFilter) );
}
public void ladeBildInDatei(Image img) {
BufferedImage bi = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = bi.createGraphics();
g2d.drawImage(img, 0, 0, null); // das bild in das bi zeichnen
g2d.dispose();
try {
ImageIO.write(bi, "png", bildDatei); // DATEIFORMAT
} catch (IOException e) {
jop.showMessageDialog(this,e);
System.exit(0);
}
}
public void erstelleDatei() {
File bildDir = new File("C:\\temp\\");
if (!bildDir.exists()) {
bildDir.mkdir();
}
this.bildDatei = new File("C:\\temp\\report.png"); //DATEIFORMAT
if (this.bildDatei.exists()) {
this.bildDatei.delete();
}
try {
this.bildDatei.createNewFile();
} catch (IOException e) {
jop.showMessageDialog(this,e);
System.exit(0);
}
}
public static void main(String[] args) {
Bild b = new Bild();
b.foo();
}
}