fabim
Dezembro 21, 2006, 6:10pm
#1
Ola pessoal,
Vlw mesmo, muito obrigado a geral ae pelas respostas q tem me dado… ta ajudando DEMAIS aqui no meu projeto…
So mais uma coisa, q cs vao matar de letra…
Tenho um objeto BufferedImage… esta no formato .BMP… preciso transformar ele em um array de bytes pra gravar no banco (BLOB), mas ele precisa estar no formato JPEG…
Depois preciso ler um array de bytes[] e ai posso exibir em formato JPEG, pq nao vo mais manipular a imagem vai ser so visualizacao mesmo…
Alguem ae tem um link, um exemplo ou algo assim onde eu possa buscar essas informações??
VLW
thingol
Dezembro 21, 2006, 6:34pm
#2
Você precisa de algo como o JAI ou o javax.imageio - depende da versão do JDK que você pode usar.
Para o JAI: http://jai.dev.java.net
Para o javax.imageio: Procure no javadoc de seu JDK.
fabim
Dezembro 21, 2006, 6:48pm
#3
[quote=thingol]Você precisa de algo como o JAI ou o javax.imageio - depende da versão do JDK que você pode usar.
Para o JAI: http://jai.dev.java.net
Para o javax.imageio: Procure no javadoc de seu JDK. [/quote]
tipow…
eu fiz a compressao e transformei o array de bytes que tava no formato .bmp, pra .jpg, usando JPEGImageEncoder + OutputStream…
agora o problema e na hora de pegar esse array de bytes do banco, e converter num BufferedImage… nao to conseguindo usar Raster, etc…
alguem ae ja resgatou bytes[] do banco e mostrou em JPG?
EU usei gravando num campo bytea do postgresql , mas funciona da mesma forma com o blob ;…
vc tem q declarar um array de byte … ex: byte[] imagemStream = null;
e no seu resultSet pegar o q esta no campo e jogar para esse array …
ex.: imagemStream= rs.getBytes(“foto”);
Verifique se o array nao esta nulo e ( if (imagemStream != null){ )
e entao :
response.setContentType( "image/jpeg" );
OutputStream exibe = response.getOutputStream();
exibe.write( imagemStream);
}
Aqui o codigo do servlet todo :
/*
srvfotoexibe.java
Created on 15 de Dezembro de 2006, 00:39
*/
package servlets;
import com.sun.image.codec.jpeg.ImageFormatException;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageDecoder;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import dao.DaoConnection;
import java.awt.image.BufferedImage;
import java.io .;
import java.net . ;
import java.sql.Blob;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.;
import javax.servlet.http. ;
import org.apache.commons.el.BinaryOperator;
import org.postgresql.largeobject.BlobOutputStream;
import java.lang.*;
/**
*
@author Re
@version
*/
public class srvfotoexibe extends HttpServlet {
/** Processes requests for both HTTP GET
and POST
methods.
@param request servlet request
@param response servlet response
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//response.setContentType (“text/html;charset=UTF-8”);
//PrintWriter out = response.getWriter();
int codigo = Integer.parseInt(request.getParameter(“codigo”));
byte[] imagemStream = null;
DaoConnection d = new DaoConnection();
String sqlselect =“Select foto ,LENGTH(foto) as tamanho from foto where codigo = ?”;
PreparedStatement p;
try {
p = d.getConnection().prepareStatement(sqlselect);
p.setInt(1,codigo);
ResultSet rs = p.executeQuery();
while(rs.next()){
int tamanho = rs.getInt(“tamanho”);
imagemStream= rs.getBytes(“foto”);
if (imagemStream != null){
response.setContentType( “image/jpeg” );
OutputStream exibe = response.getOutputStream();
exibe.write( imagemStream);
//out.println (tamanho);
}
}
p.close();
} catch (SQLException ex) {
ex.printStackTrace();
//out.println (ex.getMessage());
}
/response.setContentType( “image/jpeg” );
OutputStream escreve = response.getOutputStream();
escreve.write( imagemStream ); /
//out.close ();
}
//
/** Handles the HTTP GET
method.
@param request servlet request
@param response servlet response
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/** Handles the HTTP POST
method.
@param request servlet request
@param response servlet response
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/** Returns a short description of the servlet.
*/
public String getServletInfo() {
return “Short description”;
}
//
}