jPanel - Como faço pra salvar como imagem

2 respostas
M

Ola galera.

Estou precisando salvar a imagem contida em um jpanel…

Tipo, eu crio um codigo de barras e desenho no painel, mais nao sei como
imprimir… ai pensei em salvar a imagem e posteriormente imprimir.

2 Respostas

M

Entao… galera ja consegui desenhar varias coisas no panel…

mas salva-lo ou imprimi-lo alguem sabe como?

Help, Please.

M

achei galera… um metodo facil facil

public void exportarJPEG(File file, int w,int h){
        BufferedImage buffer=null;
        buffer=atualizarBuffer(buffer,w,h);
        if(buffer==null){
            System.out.println("nao criou buffer");
        }
        writeJPEG(file, buffer);
    }
    
    /**construção do buffer de imagem para exportar imagem
     * @param buffer objeto buffer de imagem
     * @param w largula da imagem
     * @param h altura da imagem*/
    private BufferedImage atualizarBuffer(BufferedImage buffer,int w,int h){
        buffer = new BufferedImage( w,h, BufferedImage.TYPE_INT_RGB );
        Color c=Color.WHITE;
        int cor=c.getRGB(); // pega a cor como inteiro
        for(int i=0;i<w;i++){
            for(int j=0;j<h;j++)
                buffer.setRGB(i,j,cor);
        }
        Graphics2D g = null;
        g = (Graphics2D)buffer.getGraphics();
        g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
        g.setRenderingHint(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY);
        g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
        g.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING,RenderingHints.VALUE_COLOR_RENDER_QUALITY);
        g.setBackground(Color.white);
        g.setStroke(new BasicStroke(4,BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER));
        g.setPaint(Color.DARK_GRAY);
        g.setColor(Color.BLUE);
        //g.drawLine(0, 0, 10, 10)
        barCode.getRenderer().render(g, 10, 10, 25);
        g.drawString(""+x, 25, 60);
        if(buffer==null){
            System.out.println("buffer null");
        }
        return buffer;
    }
    
    /**salvar efetivamente a imagem em disco
     * @param file arquivo para salvar imagem
     * @param backBuffer buffer de imagem*/
    private void writeJPEG(File file ,BufferedImage backBuffer) {
        try {
            BufferedOutputStream bos = new BufferedOutputStream( new FileOutputStream( file));
            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bos);

            if(backBuffer==null){
                System.out.println("$$$$$$$$$$$$$$$$$$$$$$$$$");
            }
            JPEGEncodeParam jep = encoder.getDefaultJPEGEncodeParam( backBuffer );

            jep.setQuality( 1.0f, false );

            encoder.setJPEGEncodeParam( jep );

            encoder.encode( backBuffer );


            bos.close();

        } catch ( Exception e ) {
            e.printStackTrace();
        }
    }
    
    public void salvaImageCodigo(File file, int w,int h){
        this.exportarJPEG( file, w,h);
    }

Nao esqueca de exportar todos os seus objetos desenhados no ‘jpanel’ para Graphics2d.

Qqlr duvida entre em contato…

Agora como eu faço pra imprimir esta imagem jpeg???

Criado 17 de setembro de 2008
Ultima resposta 25 de set. de 2008
Respostas 2
Participantes 1