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/05/08 22:52:03 UTC
svn commit: r1593416 - in
/pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/xobject:
PDJpegTest.java PDPixelMapTest.java PDUtils.java
Author: tilman
Date: Thu May 8 20:52:03 2014
New Revision: 1593416
URL: http://svn.apache.org/r1593416
Log:
PDFBOX-2057, PDFBOX-2067: added test for the masks
Modified:
pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDJpegTest.java
pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDPixelMapTest.java
pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDUtils.java
Modified: pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDJpegTest.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDJpegTest.java?rev=1593416&r1=1593415&r2=1593416&view=diff
==============================================================================
--- pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDJpegTest.java (original)
+++ pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDJpegTest.java Thu May 8 20:52:03 2014
@@ -29,6 +29,7 @@ import org.apache.pdfbox.pdmodel.edit.PD
import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceGray;
import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceRGB;
import static org.apache.pdfbox.pdmodel.graphics.xobject.PDUtils.checkIdent;
+import static org.apache.pdfbox.pdmodel.graphics.xobject.PDUtils.colorCount;
import static org.apache.pdfbox.pdmodel.graphics.xobject.PDUtils.createInterestingImage;
import org.apache.pdfbox.util.ImageIOUtil;
@@ -88,7 +89,6 @@ public class PDJpegTest extends TestCase
// this can be checked for ident, because the actual jpeg stream is stored
PDUtils.checkIdent(image, ximage.getRGBImage());
-
assertNull(ximage.getSMaskImage());
// This part isn't really needed because this test doesn't break
@@ -185,6 +185,7 @@ public class PDJpegTest extends TestCase
PDJpeg ximage = new PDJpeg(document, awtImage);
validate(ximage, 8, awtImage.getWidth(), awtImage.getHeight(), "jpg", PDDeviceRGB.NAME);
validate(ximage.getSMaskImage(), 8, awtImage.getWidth(), awtImage.getHeight(), "jpg", PDDeviceGray.NAME);
+ assertTrue(colorCount(ximage.getSMaskImage().getRGBImage()) > awtImage.getHeight() / 10);
// This part isn't really needed because this test doesn't break
// if the mask has the wrong colorspace (PDFBOX-2057), but it is still useful
@@ -224,6 +225,7 @@ public class PDJpegTest extends TestCase
PDJpeg ximage = new PDJpeg(document, awtImage);
validate(ximage, 8, awtImage.getWidth(), awtImage.getHeight(), "jpg", PDDeviceRGB.NAME);
validate(ximage.getSMaskImage(), 8, awtImage.getWidth(), awtImage.getHeight(), "jpg", PDDeviceGray.NAME);
+ assertTrue(colorCount(ximage.getSMaskImage().getRGBImage()) > awtImage.getHeight() / 10);
// This part isn't really needed because this test doesn't break
// if the mask has the wrong colorspace (PDFBOX-2057), but it is still useful
Modified: pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDPixelMapTest.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDPixelMapTest.java?rev=1593416&r1=1593415&r2=1593416&view=diff
==============================================================================
--- pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDPixelMapTest.java (original)
+++ pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDPixelMapTest.java Thu May 8 20:52:03 2014
@@ -21,6 +21,7 @@ import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
+import static junit.framework.Assert.assertTrue;
import junit.framework.TestCase;
import org.apache.pdfbox.exceptions.COSVisitorException;
import org.apache.pdfbox.pdmodel.PDDocument;
@@ -28,6 +29,7 @@ import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.edit.PDPageContentStream;
import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceGray;
import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceRGB;
+import static org.apache.pdfbox.pdmodel.graphics.xobject.PDUtils.colorCount;
import org.apache.pdfbox.util.ImageIOUtil;
/**
@@ -144,8 +146,9 @@ public class PDPixelMapTest extends Test
PDPixelMap ximage = new PDPixelMap(document, awtImage);
validate(ximage, 8, awtImage.getWidth(), awtImage.getHeight(), "png", PDDeviceRGB.NAME);
- validate(ximage.getSMaskImage(), 8, awtImage.getWidth(), awtImage.getHeight(), "png", PDDeviceGray.NAME);
checkIdent(awtImage, ximage.getRGBImage());
+ validate(ximage.getSMaskImage(), 8, awtImage.getWidth(), awtImage.getHeight(), "png", PDDeviceGray.NAME);
+ assertTrue(colorCount(ximage.getSMaskImage().getRGBImage()) > awtImage.getHeight() / 10);
// This part isn't really needed because this test doesn't break
// if the mask has the wrong colorspace (PDFBOX-2057), but it is still useful
@@ -184,8 +187,9 @@ public class PDPixelMapTest extends Test
PDPixelMap ximage = new PDPixelMap(document, awtImage);
validate(ximage, 8, awtImage.getWidth(), awtImage.getHeight(), "png", PDDeviceRGB.NAME);
- validate(ximage.getSMaskImage(), 8, awtImage.getWidth(), awtImage.getHeight(), "png", PDDeviceGray.NAME);
checkIdent(awtImage, ximage.getRGBImage());
+ validate(ximage.getSMaskImage(), 8, awtImage.getWidth(), awtImage.getHeight(), "png", PDDeviceGray.NAME);
+ assertTrue(colorCount(ximage.getSMaskImage().getRGBImage()) > awtImage.getHeight() / 10);
// This part isn't really needed because this test doesn't break
// if the mask has the wrong colorspace (PDFBOX-2057), but it is still useful
@@ -216,8 +220,8 @@ public class PDPixelMapTest extends Test
PDPixelMap ximage = new PDPixelMap(document, awtImage);
validate(ximage, 8, awtImage.getWidth(), awtImage.getHeight(), "png", PDDeviceRGB.NAME);
- assertNull(ximage.getSMaskImage());
checkIdent(awtImage, ximage.getRGBImage());
+ assertNull(ximage.getSMaskImage());
// This part isn't really needed because this test doesn't break
// if the mask has the wrong colorspace (PDFBOX-2057), but it is still useful
@@ -248,8 +252,8 @@ public class PDPixelMapTest extends Test
PDPixelMap ximage = new PDPixelMap(document, awtImage);
validate(ximage, 8, awtImage.getWidth(), awtImage.getHeight(), "png", PDDeviceRGB.NAME);
- assertNull(ximage.getSMaskImage());
checkIdent(awtImage, ximage.getRGBImage());
+ assertNull(ximage.getSMaskImage());
// This part isn't really needed because this test doesn't break
// if the mask has the wrong colorspace (PDFBOX-2057), but it is still useful
@@ -267,43 +271,6 @@ public class PDPixelMapTest extends Test
document.close();
}
-// /**
-// * Tests RGB PDPixelMapTest() with TYPE_INT_ARGB image.
-// *
-// * @throws java.io.IOException
-// * @throws org.apache.pdfbox.exceptions.COSVisitorException
-// */
-// public void testCreateLosslessPDFBOX1649() throws IOException, COSVisitorException
-// {
-// PDDocument document = new PDDocument();
-// BufferedImage awtImage = ImageIO.read(new URL("https://issues.apache.org/jira/secure/attachment/12589433/test.png").openStream());
-//
-//System.out.println ("PNG: " + awtImage);
-//
-//ImageIO.write (awtImage, "png", new File(testResultsDir, "8.png"));
-// PDPixelMap ximage = new PDPixelMap(document, awtImage);
-// validate(ximage, 8, awtImage.getWidth(), awtImage.getHeight(), "png", PDDeviceRGB.NAME);
-// validate(ximage.getSMaskImage(), 8, awtImage.getWidth(), awtImage.getHeight(), "png", PDDeviceGray.NAME);
-//ImageIO.write (ximage.getRGBImage(), "png", new File(testResultsDir, "91.png"));
-//ImageIO.write (ximage.getSMaskImage().getRGBImage(), "png", new File(testResultsDir, "92.png"));
-//
-// // This part isn't really needed because this test doesn't break
-// // if the mask has the wrong colorspace (PDFBOX-2057), but it is still useful
-// // if something goes wrong in the future and we want to have a PDF to open.
-// PDPage page = new PDPage(PDPage.PAGE_SIZE_A4);
-// document.addPage(page);
-// PDPageContentStream contentStream = new PDPageContentStream(document, page, true, false);
-// contentStream.drawXObject(ximage, 0, 500, ximage.getWidth(), ximage.getHeight());
-// //contentStream.drawXObject(ximage, 200, 350, ximage.getWidth(), ximage.getHeight());
-// contentStream.close();
-// File pdfFile = new File(testResultsDir, "PDFBOX1649.pdf");
-// document.save(pdfFile);
-// document.close();
-// document = PDDocument.loadNonSeq(pdfFile, null);
-// document.close();
-//
-// checkIdent(awtImage, ximage.getRGBImage());
-// }
/**
* Tests RGB PDPixelMapTest() with image from a color GIF
*
Modified: pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDUtils.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDUtils.java?rev=1593416&r1=1593415&r2=1593416&view=diff
==============================================================================
--- pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDUtils.java (original)
+++ pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDUtils.java Thu May 8 20:52:03 2014
@@ -19,6 +19,8 @@ package org.apache.pdfbox.pdmodel.graphi
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
+import java.util.HashSet;
+import java.util.Set;
import static junit.framework.Assert.assertEquals;
/**
@@ -68,4 +70,19 @@ public class PDUtils
}
}
+ static int colorCount(BufferedImage bim)
+ {
+ Set<Integer> colors = new HashSet<Integer>();
+ int w = bim.getWidth();
+ int h = bim.getHeight();
+ for (int y = 0; y < h; y++)
+ {
+ for (int x = 0; x < w; x++)
+ {
+ colors.add(bim.getRGB(x, y));
+ }
+ }
+ return colors.size();
+ }
+
}