Galera, consegui fazer o merge das imagens, mas não consigo salvá-la, faço tudo que quero na imagem e obtenho um objeto do tipo Graphics2D, mas como salvar essa imagem em formato JPG?
Abaixo segue o código de testes que estou executando…
public class TransparentImage
extends JFrame {
BufferedImage bi1;
BufferedImage bi2;
public static void main(String args[]) {
TransparentImage ti = new TransparentImage( );
ti.setSize(400, 400);
ti.setVisible(true);
ti.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
public TransparentImage( ) {
Image image1 = Toolkit.getDefaultToolkit().getImage("c:\\temp\\logo.jpg");
Image image2 = Toolkit.getDefaultToolkit().getImage("c:\\temp\\inverno.jpg");
MediaTracker tracker = new MediaTracker(this);
tracker.addImage(image1, 0);
tracker.addImage(image2, 0);
try {
tracker.waitForID(0); }
catch (InterruptedException ie) {
ie.printStackTrace( ); }
bi1 = new BufferedImage(image1.getWidth(null), image1.getHeight(null), BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = bi1.createGraphics( );
g2.drawImage(image1, null, null);
bi2 = new BufferedImage(image2.getWidth(null), image2.getHeight(null), BufferedImage.TYPE_INT_ARGB);
g2 = bi2.createGraphics( );
g2.drawImage(image2, null, null);
}
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
Point2D center = new Point2D.Float(this.getHeight( ) / 2, this.getWidth( ) / 2);
AffineTransform at = AffineTransform.getTranslateInstance(center.getX( ) - (bi2.getWidth( ) / 2), center.getY( ) - (bi2.getHeight( ) / 2));
g2.transform(at);
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.drawImage(bi2, 0, 0, null);
/*AlphaComposite c = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, .99f);
g2.setComposite(c);*/
at = AffineTransform.getTranslateInstance(center.getX( ) - (bi1.getWidth( ) / 2), center.getY( ) - (bi1.getHeight( ) / 2));
g2.setTransform(at);
g2.drawImage(bi1, 0, 0, null);
Image img = this.createImage(this.getWidth(),this.getHeight());
BufferedImage bi3 = new BufferedImage(img.getWidth(null),img.getHeight(null),BufferedImage.TYPE_INT_RGB);
Graphics2D g3 = bi3.createGraphics();
try {
ImageIO.write(bi3,"jpg",new File("C:\\temp\\logo_.jpg"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}