You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2014/03/12 20:27:41 UTC
svn commit: r1576867 - in
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util: ImageIOUtil.java
JPEGUtil.java
Author: tilman
Date: Wed Mar 12 19:27:41 2014
New Revision: 1576867
URL: http://svn.apache.org/r1576867
Log:
PDFBOX-1977: set and test resolution for JPEG images
Added:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/JPEGUtil.java (with props)
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java?rev=1576867&r1=1576866&r2=1576867&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java Wed Mar 12 19:27:41 2014
@@ -152,14 +152,25 @@ public class ImageIOUtil
}
}
- // metadata
- setDPI(metadata, dpi, formatName);
-
- // TIFF metadata
if (formatName.toLowerCase().startsWith("tif"))
{
+ // TIFF metadata
TIFFUtil.updateMetadata(metadata, image, dpi);
}
+ else if ("jpeg".equals(formatName.toLowerCase())
+ || "jpg".equals(formatName.toLowerCase()))
+ {
+ // This segment must be run before other meta operations,
+ // or else "IIOInvalidTreeException: Invalid node: app0JFIF"
+ // The other (general) "meta" methods may not be used, because
+ // this will break the reading of the meta data in tests
+ JPEGUtil.updateMetadata(metadata, dpi);
+ }
+ else
+ {
+ // metadata
+ setDPI(metadata, dpi, formatName);
+ }
// write
imageOutput = ImageIO.createImageOutputStream(output);
Added: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/JPEGUtil.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/JPEGUtil.java?rev=1576867&view=auto
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/JPEGUtil.java (added)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/JPEGUtil.java Wed Mar 12 19:27:41 2014
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2014 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.pdfbox.util;
+
+import java.awt.image.BufferedImage;
+import javax.imageio.metadata.IIOInvalidTreeException;
+import javax.imageio.metadata.IIOMetadata;
+import org.w3c.dom.Element;
+
+/**
+ *
+ * @author Tilman Hausherr
+ */
+class JPEGUtil
+{
+ static final String JPEG_NATIVE_FORMAT = "javax_imageio_jpeg_image_1.0";
+
+ static void updateMetadata(IIOMetadata metadata, int dpi) throws IIOInvalidTreeException
+ {
+ // https://svn.apache.org/repos/asf/xmlgraphics/commons/trunk/src/java/org/apache/xmlgraphics/image/writer/imageio/ImageIOJPEGImageWriter.java
+ // http://docs.oracle.com/javase/6/docs/api/javax/imageio/metadata/doc-files/jpeg_metadata.html
+
+ Element root = (Element) metadata.getAsTree(JPEG_NATIVE_FORMAT);
+ Element child = (Element) root.getElementsByTagName("app0JFIF").item(0);
+ child.setAttribute("resUnits", "1"); // inch
+ child.setAttribute("Xdensity", Integer.toString(dpi));
+ child.setAttribute("Ydensity", Integer.toString(dpi));
+ metadata.mergeTree(JPEG_NATIVE_FORMAT, root);
+ }
+}
Propchange: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/JPEGUtil.java
------------------------------------------------------------------------------
svn:eol-style = native