# This patch file was generated by NetBeans IDE # Following Index: paths are relative to: /home/bensteinm/workspace_mdt-7.0/openmap # This patch can be applied using context Tools: Patch action on respective folder. # It uses platform neutral UTF-8 encoding and \n newlines. # Above lines and this line are ignored by the patching process. Index: src/corba/com/bbn/openmap/layer/rpf/corba/CRFPClient.java --- src/corba/com/bbn/openmap/layer/rpf/corba/CRFPClient.java Base (BASE) +++ src/corba/com/bbn/openmap/layer/rpf/corba/CRFPClient.java Locally Modified (Based On LOCAL) @@ -48,8 +48,9 @@ import com.bbn.openmap.proj.Projection; import com.bbn.openmap.util.Debug; import com.bbn.openmap.util.PropUtils; -import com.sun.image.codec.jpeg.JPEGCodec; -import com.sun.image.codec.jpeg.JPEGImageDecoder; +import javax.imageio.ImageIO; +import javax.imageio.stream.ImageInputStream; +import javax.imageio.stream.MemoryCacheImageInputStream; /** * An implementation of the RpfFrameProvider interface that uses CORBA to get @@ -451,10 +452,8 @@ if (jpegData.length == 0) return null; - ByteArrayInputStream bais = new ByteArrayInputStream(jpegData); - JPEGImageDecoder jid = JPEGCodec.createJPEGDecoder(bais); - - BufferedImage bi = jid.decodeAsBufferedImage(); \ No newline at end of file + ImageInputStream iis = new MemoryCacheImageInputStream(new ByteArrayInputStream(jpegData)); + BufferedImage bi = ImageIO.read(iis); \ No newline at end of file int height = bi.getHeight(); int width = bi.getWidth(); int[] pixels = bi.getRGB(0, 0, width, height, null, 0, width); Index: src/openmap/com/bbn/openmap/image/BufferedImageHelper.java --- src/openmap/com/bbn/openmap/image/BufferedImageHelper.java Base (BASE) +++ src/openmap/com/bbn/openmap/image/BufferedImageHelper.java Locally Modified (Based On LOCAL) @@ -239,12 +239,13 @@ w = ii.getIconWidth(); if (h <= 0) h = ii.getIconHeight(); + return getBufferedImage(ii.getImage(), x, y, w, h, - BufferedImage.TYPE_INT_ARGB); + BufferedImage.TYPE_INT_RGB); } /** @@ -296,7 +297,7 @@ y, w, h, - BufferedImage.TYPE_INT_ARGB); \ No newline at end of file + BufferedImage.TYPE_INT_RGB); \ No newline at end of file } /** Index: src/openmap/com/bbn/openmap/image/JPEGHelper.java --- src/openmap/com/bbn/openmap/image/JPEGHelper.java Base (BASE) +++ src/openmap/com/bbn/openmap/image/JPEGHelper.java Locally Modified (Based On LOCAL) @@ -19,15 +19,21 @@ // $Author: dietrick $ // // ********************************************************************** - package com.bbn.openmap.image; -import com.sun.image.codec.jpeg.*; import java.io.*; import java.awt.image.*; import java.net.URL; import com.bbn.openmap.util.Debug; +import java.util.Iterator; +import javax.imageio.IIOImage; +import javax.imageio.ImageIO; +import javax.imageio.ImageWriteParam; +import javax.imageio.ImageWriter; +import javax.imageio.stream.FileImageOutputStream; +import javax.imageio.stream.ImageOutputStream; +import javax.imageio.stream.MemoryCacheImageOutputStream; /** * This class provides some utility methods for creating jpeg encoded @@ -50,28 +56,34 @@ */ public static byte[] encodeJPEG(BufferedImage image, float quality) throws IOException { - ByteArrayOutputStream out = new ByteArrayOutputStream(); + ImageOutputStream iosout = new MemoryCacheImageOutputStream(out); if (Debug.debugging("jpeghelper")) { Debug.output("Got output stream..." + out); } - JPEGEncodeParam param = JPEGCodec.getDefaultJPEGEncodeParam(image); - param.setQuality(quality, true); + Iterator iter = ImageIO.getImageWritersByFormatName("jpeg"); + ImageWriter writer = iter.next(); + ImageWriteParam iwp = writer.getDefaultWriteParam(); + iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); + iwp.setCompressionQuality(quality); if (Debug.debugging("jpeghelper")) { Debug.output("Got encode params..."); } - JPEGImageEncoder enc = JPEGCodec.createJPEGEncoder(out, param); + writer.setOutput(iosout); if (Debug.debugging("jpeghelper")) { Debug.output("Got jpeg encoder..."); } - enc.encode(image); + IIOImage iioi = new IIOImage(image, null, null); + writer.write(null, iioi, iwp); if (Debug.debugging("jpeghelper")) { Debug.output("encoded?"); } + writer.dispose(); + return out.toByteArray(); } @@ -92,6 +104,21 @@ return encodeJPEG(bi, quality); } + private static void encodeAndWriteJPEGFile(File file, BufferedImage image, float quality) + throws IOException { + Iterator iter = ImageIO.getImageWritersByFormatName("jpeg"); + ImageWriter writer = iter.next(); + ImageWriteParam iwp = writer.getDefaultWriteParam(); + iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); + iwp.setCompressionQuality(quality); + + FileImageOutputStream output = new FileImageOutputStream(file); + writer.setOutput(output); + IIOImage iioi = new IIOImage(image, null, null); + writer.write(null, iioi, iwp); + writer.dispose(); + } + /** * A test main that encodes an image url at various jpeg quality * factors. @@ -145,12 +172,9 @@ for (int i = 0; i < 20; i++) { File f = new File(filebase + ((i < 10) ? "0" : "") + i + ".jpg"); float quality = 0.0499f * i; - byte data[] = encodeJPEG(bi, quality); - OutputStream writef = new FileOutputStream(f); - writef.write(data); - writef.close(); + encodeAndWriteJPEGFile(f, bi, quality); html.println("Image Quality Factor: " + quality + "
"); - html.println("Image Size (bytes) : " + data.length + "
"); \ No newline at end of file + html.println("Image Size (bytes) : " + f.length() + "
"); \ No newline at end of file html.println("
"); }