[NÃO RESOLVIDO] Gerar imagem

Opa…

Preciso gerar uma imagem à partir de dados em uma tabela.

Eles estão em hexadecimal acho… (FE089F98EG… tipo assim)…

Não sei nem por onde começar a pesquisar (achei várias coisas pra gerar imagem, em uma busca no google, mas nenhuma com esse caso específico)… se alguém puder dar um caminho…

valeu!

Como assim gerar uma imagem a partir de dados ??

Vai fazer algum relatório e salvar como imagem ?
Ou tu tem uma imagem salva em um banco de dados e quer colocar em um arquivo ??

tenho uma imagem no banco e tenho que, hora gerar arquivo, hora só exibir na tela…

não tem relatórios.

Valeu…

Gerar arquivo basta tu criar um arquivo e colocar o conteudo vindo do banco nele.

E mostrar, se for web tu nem precisa gerar o arquivo, pode fazer o servlet responder o conteudo da foto.
Assim bastaria tu criar uma tag apontando o src para o seu servlet.

Simples assim…

então…

a idéia é a seguinte…

tenho dentro do meu banco as imagens desta forma:

789CECDDDF6FE3467E00F0A1B9300D54306DDC43594030BDD9C3F5DE2A75819E02A8622E09BA7D29EE5FB0EB00F77812F2A2003A0D755E5839C0B0B2B8872640B0EA9F70401F0A14870B7532C40D509CFBD83EF44C2D83EC5B77787E088D4C38FD0EF593

Isso é o começo de uma delas… ela inteira é muuuuito maior… hehehe…

como converter isso pra uma imagem?

Valeu!

Sua imagem está codificada em outra base, não a binária. Você precisa descobrir qual.

Ai você pega e converte para base binária e grava arquivo ou gera uma imagem.

Talvez seu banco de dados tenha alguma função que faça isso pra você direto. No MySQL:

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_unhex

SELECT UNHEX(seucampo) FROM suatabela;

Agora se for base 64, podes tentar a função CONV dele:

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_conv

em java, me corrijam se eu estiver errado, mas deve ser algo assim:

public class HexToString {

    static String hexaToString(String hexa) {
        StringBuilder sb = new StringBuilder();        
        char []value = new char[2];        
        for(int i = 0; i < hexa.length(); i++){
            int pos = i % 2;
            value[pos] = hexa.charAt(i);
            if (pos > 0) {
                int intVal = Integer.parseInt(new String(value), 16);
                char charVal = (char) intVal;
                sb.append(charVal);                      
            }
        }   
        return(sb.toString());
    }
    
    public static void main(String []args) {
        //return peron
        System.out.println(HexToString.hexaToString("7065726F6E"));
    }
    
}

PS: agora que me dei conta que era imagem né, então acho melhor você trabalhar com Streams.

Espero ter ajudado

Opa… voltei…

achei o seguinte código para gerar uma imagem à partir de dados no meu banco:

ResultSet result = null; try { Image img = Toolkit.getDefaultToolkit().createImage( result.getBytes(0)); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); }

Agora só falta salvar as imagens.

Alguma dica?

Valeu!

Opa… cheguei no seguinte ponto…

não sei se estou certo, ou errado, mas catando no google, fóruns e por aí, foi onde cheguei…

[code]/**

  • @(#)Migracao.java
  • @author
  • @version 1.00 2007/9/10
    /
    import java.io.
    ;
    import java.sql.;
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Image;
    import java.awt.RenderingHints;
    import java.awt.image.BufferedImage;
    import java.io.BufferedOutputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.net.URL;
    import java.awt.Toolkit;
    import javax.imageio.
    ;

public class Execute {

public Execute() {
}

public static void main(String args[]){
int i = 0;
	try{
    	GeraImagem gi = new GeraImagem();
    	ResultSet rs = gi.retornaFiguras();
		while(rs.next()){
			i++;
			
			System.out.println("Conteúdo do arquivo "+i+ " \n--> " + hexaToString(rs.getString("im_figura_fso").substring(0,200))+"\n\n");

				   try {  
						Image img = Toolkit.getDefaultToolkit().createImage(rs.getBytes("im_figura_fso"));
						
						BufferedImage imagem = converteImagem(img);
						ImageIO.write(imagem, "PNG", new File("teste"+i+".png"));

				   }catch (Exception e1) {
				       // TODO Auto-generated catch block  
				       System.out.println("\n\nErro - > "  + e1 + "\n\n");
				   }  
			
		}
	}catch(Exception e){
		System.out.println("Ahá--- erroo -->>> " + e);
	}
	

}

public static String hexaToString(String hexa) {  
     StringBuilder sb = new StringBuilder();          
     char []value = new char[2];          
     for(int i = 0; i < hexa.length(); i++){  
         int pos = i % 2;  
         value[pos] = hexa.charAt(i);  
         if (pos > 0) {  
             int intVal = Integer.parseInt(new String(value), 16);  
             char charVal = (char) intVal;  
             sb.append(charVal);                        
         }  
     }     
     return(sb.toString());  
 }  

public static BufferedImage converteImagem(Image im)
{
BufferedImage bi = new BufferedImage(im.getWidth(null),im.getHeight(null),BufferedImage.TYPE_INT_RGB);
Graphics bg = bi.getGraphics();
bg.drawImage(im, 0, 0, null);
bg.dispose();
return bi;
}

}[/code]

O erro é:

Sei lá…

to perdidão já… hehehe

valeu