He utilizado com.sun.image.codec.jpeg.JPEGImageEncoder para manejar imágenes JPEG, como los gráficos y demás, en mi webapp. Ahora, estoy actualizando mi máquina a utilizar JDK7, pero esta versión obsoleta de esta clase. A continuación está el código que tengo para cambiar:

public void processChart(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("image/jpeg");
out = response.getOutputStream();
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires",0);
try {
int w = Integer.parseInt(request.getParameter("WIDTH"));
int h = Integer.parseInt(request.getParameter("HEIGHT"));
java.awt.image.BufferedImage ChartImage = new java.awt.image.BufferedImage(w,h,java.awt.image.BufferedImage.TYPE_INT_RGB);
java.awt.Graphics2D ChartGraphics = ChartImage.createGraphics();
Chart c = getChart(request);
c.setSize(w,h);
c.paint(ChartGraphics);
//CODE BELOW TO CHANGE...
com.sun.image.codec.jpeg.JPEGImageEncoder encoder = 
com.sun.image.codec.jpeg.JPEGCodec.createJPEGEncoder(out);
encoder.encode(ChartImage);
} catch (Exception e) {
e.printStackTrace();
}
}
private Chart getChart(HttpServletRequest request) {
chartLoader loader = new chartLoader(null);
loader.paintDirect = true;
java.util.Enumeration ps = request.getParameterNames();
while (ps.hasMoreElements()) {
String name = (String) ps.nextElement();
loader.setParameter(name,request.getParameter(name));
}
//create Chart
Chart chart = loader.build(false,false);
Chart.tmpImage = new java.awt.image.BufferedImage(200,200,java.awt.image.BufferedImage.TYPE_INT_RGB);
return chart;
}
  • Hola, podrías por favor compartir la versión de la biblioteca que está utilizando para esta conversión de imagen, im enfrentan el mismo problema, pero buscando un poco de problema de biblioteca, será genial si comparte el maven de la dependencia.

2 Comentarios

  1. 38

    Uso ImageIO, se puede leer/escribir JPEG, PNG, GIF, y BMP fuera de la caja.

    ImageIO.write(ChartImage, "jpeg", out);

    Generalmente la estática write(...) y read(...) métodos son suficientes, si usted necesita para controlar la compresión o de la manija de la imagen de datos de metadatos, retirar el Java de la Imagen de e/S Guía de API.

    • Tengo archivos JPEG que no se pueden leer correctamente con ImageIO pero bien con el viejo sol clases (CMYK, etc..)
    • Para CMYK, este otro MODO de respuesta puede ayudar a: stackoverflow.com/a/2408779/180740
    • Sí lo hizo. Gracias

Dejar respuesta

Please enter your comment!
Please enter your name here