]> source.dussan.org Git - poi.git/commitdiff
fixed bug #45829: HSSFPicture.getImageDimension() fails when DPI of image is zero
authorYegor Kozlov <yegor@apache.org>
Thu, 18 Sep 2008 10:28:24 +0000 (10:28 +0000)
committerYegor Kozlov <yegor@apache.org>
Thu, 18 Sep 2008 10:28:24 +0000 (10:28 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@696622 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/poi/hssf/usermodel/HSSFPicture.java
src/testcases/org/apache/poi/hssf/data/45829.png [new file with mode: 0755]
src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPicture.java

index 1afb30f5a6e23c8eae3e56393f95d1223005cdfa..8d2dd79641bd23879565c5d209f14dcca6790ded 100644 (file)
@@ -235,6 +235,12 @@ public class HSSFPicture
                     BufferedImage img = r.read(0);
 
                     int[] dpi = getResolution(r);
+
+                    //if DPI is zero then assume standard 96 DPI
+                    //since cannot divide by zero
+                    if (dpi[0] == 0) dpi[0] = 96;
+                    if (dpi[1] == 0) dpi[1] = 96;
+                    
                     size.width = img.getWidth()*96/dpi[0];
                     size.height = img.getHeight()*96/dpi[1];
 
diff --git a/src/testcases/org/apache/poi/hssf/data/45829.png b/src/testcases/org/apache/poi/hssf/data/45829.png
new file mode 100755 (executable)
index 0000000..eccaf30
Binary files /dev/null and b/src/testcases/org/apache/poi/hssf/data/45829.png differ
index 87578ae01bb628be0e9ccc0c4ba33fc10bac9970..d1a6719e329ea7eae048c11b50e3c23c296d2746 100644 (file)
@@ -47,4 +47,18 @@ public final class TestHSSFPicture extends TestCase{
         assertEquals(848, anchor1.getDx2());\r
         assertEquals(240, anchor1.getDy2());\r
     }\r
+\r
+    /**\r
+     * Bug # 45829 reported ArithmeticException (/ by zero) when resizing png with zero DPI.\r
+     */\r
+    public void test45829() {\r
+        HSSFWorkbook wb = new HSSFWorkbook();\r
+        HSSFSheet sh1 = wb.createSheet();\r
+        HSSFPatriarch p1 = sh1.createDrawingPatriarch();\r
+\r
+        byte[] pictureData = HSSFTestDataSamples.getTestDataFileContent("45829.png");\r
+        int idx1 = wb.addPicture( pictureData, HSSFWorkbook.PICTURE_TYPE_PNG );\r
+        HSSFPicture pic = p1.createPicture(new HSSFClientAnchor(), idx1);\r
+        pic.resize();\r
+    }\r
 }\r