E aí pessoal?
Fiz minha classe que gera imagens à partir de um banco de dados.
Aí vai ela:/**
* @(#)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");
try {
//Image img = Toolkit.getDefaultToolkit().createImage(rs.getBytes("im_figura_fso"));
byte[] bytes;
bytes = rs.getString("im_figura_fso").getBytes();
System.out.println("--> " + String.valueOf(rs.getString("im_figura_fso")).substring(0,100));
System.out.println("--> " + String.valueOf(String.valueOf(bytes)));
Image img = Toolkit.getDefaultToolkit().createImage(bytes);
BufferedImage imagem = converteImagem(img);
ImageIO.write(imagem, "JPG", new File("teste"+i+".jpg"));
}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);
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;
}
}
O problema é assim.
Eu tinha uma base oracle, que foi migrada para postgres. Dentro de uma das tabelas, eu possuo as imagns, que agora, no postgres, estão em um formato semelhante ao a seguir:
789CEC9D4F6FE43876C0A956AFD98B359A3D97C00B1866037B9943806D2001E283634EB20872CA31E7F462CF019C530A48A1....
Isso é a imagem, dentro do banco, em algum formato que não consigo identificar.
Converti isso pra bytes (para fazer a geração da imagem), mas as imagens continuam saindo pretas.
Alguém pode me dar uma luz?
Valeu!
:roll:
