Salvar imagem

17 respostas
W

Opa...

Como se faz pra salvar uma imagem através do ImageIcon?!

Não achei nenhum método pra isso na documentação da classe...

Ajuda?!

:lol:

Meu código (isso tá dentro do while):
ImageIcon imagem = new ImageIcon(rs.getBytes("im_figura_fso"));

					File file = new File("c:/imagem"+intConta+".jpg");
					ImageIO.write(imagem, "jpg", file);

17 Respostas

biozit

resolveu ?

W

to ainda procurando…

tá dificil achar um jeito de converter para o tipo correto… enfim…

alguma dica?!

biozit

O imageIO não resolveu ?

W

é que imageIO não aceita imagens do tipo imageIcon… só imagens padrão…

daí teria que fazer a conversão…

biozit

to tentando fazer o mesmo aqui…tenta isso

<blockquote>ByteInputStream in = new ByteInputStream(imgBytes,0);

Image image = Toolkit.getDefaultToolkit().createImage(imgBytes);

BufferedImage bi = new BufferedImage(320, 240,BufferedImage.TYPE_INT_RGB);

Graphics2D g = bi.createGraphics();

g.drawImage(image, 0, 0, null);

g.dispose();

File fi = new File(D:\img_rec\s+nome+".jpg");

ImageIO.write(bi, jpg, fi);

nome++;

long tempoAtual  = System.currentTimeMillis() - tempo;

System.out.println(tempoAtual);</blockquote>
W

qual o import pra isso?!

ByteInputStream

biozit

ola

esse aqui resolveu!!

public void voltaImagem()
	{
		try{
		int nome = 0;
		
		PreparedStatement ps = db.prepareStatement("select * from images limit 500");
		ResultSet rs = ps.executeQuery();
		if (rs != null) {
		   while (rs.next()) {
			   long tempo = System.currentTimeMillis();  
			   byte[] imgBytes = rs.getBytes(2);
			      // use the bytes in some way here
			      ByteInputStream in = new ByteInputStream(imgBytes,0);
			      Image image = Toolkit.getDefaultToolkit().createImage(imgBytes);  
			      BufferedImage bi = new BufferedImage(320, 240,BufferedImage.TYPE_INT_RGB);
			      Graphics2D g = bi.createGraphics();
			      g.drawImage(image, 0, 0, null);
			      g.dispose();
			      File fi = new File("D:\\img_rec\\s"+nome+".jpg");
			      ImageIO.write(toBufferedImage(image), "jpg", fi);
			      nome++;
			      long tempoAtual  = System.currentTimeMillis() - tempo;
			      System.out.println(tempoAtual);
			      tempo = System.currentTimeMillis();
			   }
			   rs.close();
			}
				ps.close();	
		}catch(Exception e)
		{
			e.printStackTrace();
		}
		
	}
W

Cara… os imports?! quais são… acho q to ficando loko…

<blockquote>C:\Projetos\Testes gerais\Oracle\MigracaoOra.java:88: cannot find symbol

symbol  : class ByteInputStream

location: class MigracaoOra

ByteInputStream in = new ByteInputStream(imgBytes,0);

^

C:\Projetos\Testes gerais\Oracle\MigracaoOra.java:88: cannot find symbol

symbol  : class ByteInputStream

location: class MigracaoOra

ByteInputStream in = new ByteInputStream(imgBytes,0);

^

C:\Projetos\Testes gerais\Oracle\MigracaoOra.java:89: cannot find symbol

symbol  : class Image

location: class MigracaoOra

Image image = Toolkit.getDefaultToolkit().createImage(imgBytes);

^

C:\Projetos\Testes gerais\Oracle\MigracaoOra.java:89: cannot find symbol

symbol  : variable Toolkit

location: class MigracaoOra

Image image = Toolkit.getDefaultToolkit().createImage(imgBytes);

^

C:\Projetos\Testes gerais\Oracle\MigracaoOra.java:90: cannot find symbol

symbol  : class BufferedImage

location: class MigracaoOra

BufferedImage bi = new BufferedImage(320, 240,BufferedImage.TYPE_INT_RGB);

^

C:\Projetos\Testes gerais\Oracle\MigracaoOra.java:90: cannot find symbol

symbol  : class BufferedImage

location: class MigracaoOra

BufferedImage bi = new BufferedImage(320, 240,BufferedImage.TYPE_INT_RGB);

^

C:\Projetos\Testes gerais\Oracle\MigracaoOra.java:90: cannot find symbol

symbol  : variable BufferedImage

location: class MigracaoOra

BufferedImage bi = new BufferedImage(320, 240,BufferedImage.TYPE_INT_RGB);

^

C:\Projetos\Testes gerais\Oracle\MigracaoOra.java:91: cannot find symbol

symbol  : class Graphics2D

location: class MigracaoOra

Graphics2D g = bi.createGraphics();

^

8 errors</blockquote>

Aqui meus imports: (todos eles)

<blockquote>import <a href="http://java.io">java.io</a>.*;

import java.sql.ResultSet;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileWriter;

import java.io.InputStream;

import java.io.PrintWriter;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.SQLException;

import javax.swing.ImageIcon;

import javax.imageio.ImageIO;

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.ByteArrayInputStream;

import java.io.ByteArrayOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.util.ArrayList;

import java.util.Enumeration;

import java.util.List;</blockquote>

Valeu!

biozit

ai vai os meus:

import java.awt.Container;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.HeadlessException;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.Transparency;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.imageio.ImageIO;
import javax.imageio.stream.ImageInputStream;
import javax.swing.ImageIcon;

import org.postgresql.*;
import org.postgresql.largeobject.LargeObject;
import org.postgresql.largeobject.LargeObjectManager;

import com.sun.xml.internal.messaging.saaj.util.ByteInputStream;
W

onde eu baixo esse… ainda não achei! (ou ele já vem por padrão?!)

com.sun.xml.internal.messaging.saaj.util.ByteInputStream;

?

valeu!

biozit

é default…esta no rt.jar

jdk 6

W

esse problema foi bom, porque me fez ver que minhas libs tavam todas no lugar errado… hehehehe…

o java se atualizou sozinho e deu porcaria…

bom, vou ajeitar tudo então… dps digo o que deu…

falta só este erro agora:

<blockquote>C:\Projetos\Testes gerais\Oracle\MigracaoOra.java:125: cannot find symbol

symbol  : method toBufferedImage(java.awt.Image)

location: class MigracaoOra

ImageIO.write(toBufferedImage(image), “jpg”, fi);

^

1 error</blockquote>

mas deve ser a mesma coisa do outro… só achar o jar e colocar no lugar certo… hehehhe

biozit

ops…falha minha

ai esta!

http://www.exampledepot.com/egs/java.awt.image/Image2Buf.html

W

bom, consegui fazer funcionar o lance, porém, não resolveu meu problema… hehehehe

não consegui tirar as imagens do oracle(que foram cadastradas via delphi)…

vou tentar outra coisa…

valeu mesmo assim!

biozit

vc tem de ver se sua imagem não foi convertida em alguma coisa antes de ser inserida…
no meu caso fiz tudo em java…e foi tudo em byte mesmo
ja vi em alguns casos a imagem é convertido em octal

W

hum… interessante… octal seria “8fy3209ghq109eu7f0923”? algo desse tipo?!

biozit

pode até ser viu…
mas é como nadar de olho fechado…
eu uso postgresql e tem o EMS que vc pode ver as imagens, ve se vc nun tem isso para o oracle

Criado 21 de dezembro de 2007
Ultima resposta 2 de jan. de 2008
Respostas 17
Participantes 2