You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ye...@apache.org on 2008/09/18 12:28:25 UTC

svn commit: r696622 - in /poi/trunk/src: java/org/apache/poi/hssf/usermodel/HSSFPicture.java testcases/org/apache/poi/hssf/data/45829.png testcases/org/apache/poi/hssf/usermodel/TestHSSFPicture.java

Author: yegor
Date: Thu Sep 18 03:28:24 2008
New Revision: 696622

URL: http://svn.apache.org/viewvc?rev=696622&view=rev
Log:
fixed bug #45829: HSSFPicture.getImageDimension() fails when DPI of image is zero

Added:
    poi/trunk/src/testcases/org/apache/poi/hssf/data/45829.png   (with props)
Modified:
    poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFPicture.java
    poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPicture.java

Modified: poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFPicture.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFPicture.java?rev=696622&r1=696621&r2=696622&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFPicture.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFPicture.java Thu Sep 18 03:28:24 2008
@@ -235,6 +235,12 @@
                     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];
 

Added: poi/trunk/src/testcases/org/apache/poi/hssf/data/45829.png
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/data/45829.png?rev=696622&view=auto
==============================================================================
Binary file - no diff available.

Propchange: poi/trunk/src/testcases/org/apache/poi/hssf/data/45829.png
------------------------------------------------------------------------------
    svn:executable = *

Propchange: poi/trunk/src/testcases/org/apache/poi/hssf/data/45829.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPicture.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPicture.java?rev=696622&r1=696621&r2=696622&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPicture.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPicture.java Thu Sep 18 03:28:24 2008
@@ -47,4 +47,18 @@
         assertEquals(848, anchor1.getDx2());
         assertEquals(240, anchor1.getDy2());
     }
+
+    /**
+     * Bug # 45829 reported ArithmeticException (/ by zero) when resizing png with zero DPI.
+     */
+    public void test45829() {
+        HSSFWorkbook wb = new HSSFWorkbook();
+        HSSFSheet sh1 = wb.createSheet();
+        HSSFPatriarch p1 = sh1.createDrawingPatriarch();
+
+        byte[] pictureData = HSSFTestDataSamples.getTestDataFileContent("45829.png");
+        int idx1 = wb.addPicture( pictureData, HSSFWorkbook.PICTURE_TYPE_PNG );
+        HSSFPicture pic = p1.createPicture(new HSSFClientAnchor(), idx1);
+        pic.resize();
+    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org