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/13 08:20:02 UTC
svn commit: r1577045 -
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java
Author: tilman
Date: Thu Mar 13 07:20:01 2014
New Revision: 1577045
URL: http://svn.apache.org/r1577045
Log:
PDFBOX-1977: Improved method on how to choose the ImageWriter
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=1577045&r1=1577044&r2=1577045&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 Thu Mar 13 07:20:01 2014
@@ -119,24 +119,32 @@ public class ImageIOUtil
Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName(formatName);
ImageWriteParam param = null;
IIOMetadata metadata = null;
+ // Loop until we get the best driver, i.e. one that supports
+ // setting dpi in the standard metadata format; however we'd also
+ // accept a driver that can't if a better one can't be found
while (writers.hasNext())
{
+ if (writer != null)
+ {
+ writer.dispose();
+ }
writer = writers.next();
param = writer.getDefaultWriteParam();
metadata = writer.getDefaultImageMetadata(new ImageTypeSpecifier(image), param);
- if (metadata.isReadOnly() || !metadata.isStandardMetadataFormatSupported())
+ if (metadata != null &&
+ !metadata.isReadOnly() &&
+ metadata.isStandardMetadataFormatSupported())
{
- writer = null;
+ break;
}
}
-
if (writer == null)
{
return false;
}
// compression
- if (param.canWriteCompressed())
+ if (param != null && param.canWriteCompressed())
{
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
if (formatName.toLowerCase().startsWith("tif"))
@@ -146,7 +154,6 @@ public class ImageIOUtil
}
else
{
- // JPEG, PNG compression
param.setCompressionType(param.getCompressionTypes()[0]);
param.setCompressionQuality(quality);
}
@@ -168,8 +175,13 @@ public class ImageIOUtil
}
else
{
- // metadata
- setDPI(metadata, dpi, formatName);
+ // write metadata is possible
+ if (metadata != null &&
+ !metadata.isReadOnly() &&
+ metadata.isStandardMetadataFormatSupported())
+ {
+ setDPI(metadata, dpi, formatName);
+ }
}
// write