Java - Exportar imagen

 
Vista:

Exportar imagen

Publicado por Elena (33 intervenciones) el 23/01/2005 17:44:28
Hola. Mi duda es la siguiente, tengo un Panel en el que coloco diversos componentes y lineas, pero lo que quiero es poder guardar todo eso como una imagen .jpg. Alguien sabe como se puede hacer eso?
Thanx
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Exportar imagen

Publicado por sergey (33 intervenciones) el 25/01/2005 06:40:05
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
/*
* ImageTest.java
*
*/

/**
* Test frame
*
* @author sergey
*/
public class ImageTest extends JFrame{

/** Creates a new instance of ImageTest */
public ImageTest() {
Container contentPane = getContentPane();

setSize(300, 300);
contentPane.add(new ImagePane());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public static void main(String[] args){
new ImageTest().setVisible(true);
}
}

class ImagePane extends JPanel {
private int iw, ih;
private BufferedImage bi;
private Graphics2D big;
private File f;
protected String path = "c:" + File.separator + "test.jpeg";

public boolean isOpaque() {
return true; // draw background!!!
}

protected void paintComponent(java.awt.Graphics g) {
Graphics2D g2 = (Graphics2D)g;
drawYourPicHere(); // Dibujamos el cuadro
g2.drawImage(bi, null, 0, 0); // Dibujamos el cuadro sobre la pantalla
saveImage(path); // Conservamos el cuadro
}

/**
* Draw image in Background
*/
protected void drawYourPicHere() {
iw = getWidth();
ih = getHeight();
bi = new BufferedImage(iw, ih, BufferedImage.TYPE_INT_RGB);
big = bi.createGraphics();

big.setColor(Color.BLACK);
big.fillRect(0, 0, iw, ih);
Font f = new Font("Serif", Font.PLAIN, 72);
big.setFont(f);
big.setColor(Color.WHITE);
big.drawString("test", 75, 100);
}

public void saveImage(String fileName) {
try {
f = new File(fileName);
ImageIO.write(bi, "JPEG", f);
}catch (Exception e) {
System.out.println("Exception in -> ImagePanel.saveImage " );
e.printStackTrace();
}
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Exportar imagen

Publicado por Elena (33 intervenciones) el 25/01/2005 09:33:38
Muchas gracias, pero sigo teniendo un problemilla... tengo un JPanel donde hay muchas cosas (incluyendo componentes) y es eso lo que quiero guardar en una imagen. He usado
BufferedImage bi=(BufferedImage)this.createImage(ancho, alto);
pensando que iba a almacenarme todo lo que había en el JPanel, pero la imagen que aparece es un cuadrado gris... ¿alguna idea de por que?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Exportar imagen

Publicado por sergey (33 intervenciones) el 26/01/2005 06:03:38
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import javax.swing.*;


/*
* Test2.java
*
*/

/**
*
* @author sergey
*/
public class Test2 extends JFrame {
private JPanel panelDemo;
private Container contentPane;
private PaneUtill paneUtill = new PaneUtill();;


/** Creates a new instance of Test2 */
public Test2() {
setTitle("Test2");
setBounds(10, 10, 100, 100);

contentPane = getContentPane();
panelDemo = new PanelDemo();
contentPane.add(panelDemo);
setVisible(true);

//!!!
paneUtill.savePane(panelDemo, "c:" + File.separator + "test2.jpeg");
}

public static void main(String[] args) {
new Test2();
}
}

class PanelDemo extends JPanel {
private JLabel lblTest;
private JButton btnTest;

public PanelDemo () {
initUI();
add(lblTest);
add(btnTest);
}

private void initUI() {
lblTest = new JLabel("Test2 lbl");
btnTest = new JButton("Test2 btn");
}
}

class PaneUtill {
private BufferedImage bi;
private Graphics2D big;
private String savePath;
private File f;

public void savePane(JPanel capPane, String savePath) {
this.savePath = savePath;

bi = new BufferedImage(capPane.getWidth(), capPane.getHeight(),
BufferedImage.TYPE_INT_RGB);
big = (Graphics2D)bi.getGraphics();
//!!!
capPane.paint(big);

saveImage();
}

private void saveImage() {
try {
f = new File(savePath);
ImageIO.write(bi, "JPEG", f);
}catch (Exception e) {
System.out.println("Exception in -> PaneUtill.saveImage " );
e.printStackTrace();
}
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Exportar imagen

Publicado por sergey (33 intervenciones) el 26/01/2005 06:18:25
setTitle("Test2");
setBounds(10, 10, 100, 100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //!!!! :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Muchas gracias, ya me funciona perfectamente

Publicado por Elena (33 intervenciones) el 27/01/2005 17:26:40
Todo arreglado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar