From: Jeremias M. <jm...@us...> - 2006-12-09 13:00:13
|
Update of /cvsroot/barcode4j/barcode4j/src/java-1.4/org/krysalis/barcode4j/output/bitmap In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv18332/src/java-1.4/org/krysalis/barcode4j/output/bitmap Modified Files: ImageIOBitmapEncoder.java Log Message: Skip metadata if it's not writable (like for image/bmp in JDK 1.5) Index: ImageIOBitmapEncoder.java =================================================================== RCS file: /cvsroot/barcode4j/barcode4j/src/java-1.4/org/krysalis/barcode4j/output/bitmap/ImageIOBitmapEncoder.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** ImageIOBitmapEncoder.java 4 Sep 2004 20:25:56 -0000 1.2 --- ImageIOBitmapEncoder.java 9 Dec 2006 13:00:09 -0000 1.3 *************** *** 91,154 **** final String jpegmeta = "javax_imageio_jpeg_image_1.0"; ! if (MimeTypes.MIME_JPEG.equals(mime) ! && jpegmeta.equals(iiometa.getNativeMetadataFormatName())) { ! ! /* JPEG gets special treatment because I believe there's a bug in ! * the JPEG codec in ImageIO converting the pixel size incorrectly ! * when using standard metadata format. JM, 2003-10-28 ! */ ! ! checkWritable(iiometa); ! ! IIOMetadataNode rootnode = (IIOMetadataNode)iiometa.getAsTree(jpegmeta); ! IIOMetadataNode variety = (IIOMetadataNode)rootnode. ! getElementsByTagName("JPEGvariety").item(0); ! ! IIOMetadataNode jfif = (IIOMetadataNode)variety. ! getElementsByTagName("app0JFIF").item(0); ! jfif.setAttribute("resUnits", "1"); //dots per inch ! jfif.setAttribute("Xdensity", Integer.toString(resolution)); ! jfif.setAttribute("Ydensity", Integer.toString(resolution)); ! //dumpMetadata(iiometa); ! //DebugUtil.dumpNode(rootnode); ! iiometa.setFromTree(jpegmeta, rootnode); ! //dumpMetadata(iiometa); ! ! } else if (iiometa.isStandardMetadataFormatSupported()) { ! checkWritable(iiometa); ! ! IIOMetadataNode rootnode = new IIOMetadataNode(stdmeta); ! IIOMetadataNode imagedim = new IIOMetadataNode("Dimension"); ! IIOMetadataNode child = new IIOMetadataNode("HorizontalPixelSize"); ! double effResolution = 1 / (UnitConv.in2mm(1) / resolution); ! child.setAttribute("value", Double.toString(effResolution)); ! imagedim.appendChild(child); ! child = new IIOMetadataNode("VerticalPixelSize"); ! child.setAttribute("value", Double.toString(effResolution)); ! imagedim.appendChild(child); ! IIOMetadataNode textNode = new IIOMetadataNode("Text"); ! child = new IIOMetadataNode("TextEntry"); ! child.setAttribute("keyword", "Software"); ! child.setAttribute("value", "Barcode4J"); ! child.setAttribute("encoding", "Unicode"); ! child.setAttribute("language", "en"); ! child.setAttribute("compression", "none"); ! textNode.appendChild(child); ! ! rootnode.appendChild(imagedim); ! rootnode.appendChild(textNode); ! ! //dumpMetadata(iiometa); ! //DebugUtil.dumpNode(rootnode); ! ! iiometa.mergeTree(stdmeta, rootnode); ! ! //dumpMetadata(iiometa); } return iiometa; } --- 91,157 ---- final String jpegmeta = "javax_imageio_jpeg_image_1.0"; ! if (!iiometa.isReadOnly()) { ! if (MimeTypes.MIME_JPEG.equals(mime) ! && jpegmeta.equals(iiometa.getNativeMetadataFormatName())) { ! ! /* JPEG gets special treatment because I believe there's a bug in ! * the JPEG codec in ImageIO converting the pixel size incorrectly ! * when using standard metadata format. JM, 2003-10-28 ! */ ! ! checkWritable(iiometa); ! ! IIOMetadataNode rootnode = (IIOMetadataNode)iiometa.getAsTree(jpegmeta); ! IIOMetadataNode variety = (IIOMetadataNode)rootnode. ! getElementsByTagName("JPEGvariety").item(0); ! ! IIOMetadataNode jfif = (IIOMetadataNode)variety. ! getElementsByTagName("app0JFIF").item(0); ! jfif.setAttribute("resUnits", "1"); //dots per inch ! jfif.setAttribute("Xdensity", Integer.toString(resolution)); ! jfif.setAttribute("Ydensity", Integer.toString(resolution)); ! //dumpMetadata(iiometa); ! //DebugUtil.dumpNode(rootnode); ! iiometa.setFromTree(jpegmeta, rootnode); ! //dumpMetadata(iiometa); ! ! } else if (iiometa.isStandardMetadataFormatSupported()) { ! checkWritable(iiometa); ! ! IIOMetadataNode rootnode = new IIOMetadataNode(stdmeta); ! IIOMetadataNode imagedim = new IIOMetadataNode("Dimension"); ! IIOMetadataNode child = new IIOMetadataNode("HorizontalPixelSize"); ! double effResolution = 1 / (UnitConv.in2mm(1) / resolution); ! child.setAttribute("value", Double.toString(effResolution)); ! imagedim.appendChild(child); ! child = new IIOMetadataNode("VerticalPixelSize"); ! child.setAttribute("value", Double.toString(effResolution)); ! imagedim.appendChild(child); ! IIOMetadataNode textNode = new IIOMetadataNode("Text"); ! child = new IIOMetadataNode("TextEntry"); ! child.setAttribute("keyword", "Software"); ! child.setAttribute("value", "Barcode4J"); ! child.setAttribute("encoding", "Unicode"); ! child.setAttribute("language", "en"); ! child.setAttribute("compression", "none"); ! textNode.appendChild(child); ! ! rootnode.appendChild(imagedim); ! rootnode.appendChild(textNode); ! ! //dumpMetadata(iiometa); ! //DebugUtil.dumpNode(rootnode); ! ! iiometa.mergeTree(stdmeta, rootnode); ! ! //dumpMetadata(iiometa); ! } } + return iiometa; } |