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!
nbluis
Outubro 19, 2007, 1:30pm
#2
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…
nbluis
Outubro 19, 2007, 1:36pm
#4
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!
peron
Outubro 19, 2007, 3:07pm
#6
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