You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xmlgraphics.apache.org by ss...@apache.org on 2021/12/23 14:30:49 UTC

svn commit: r1896317 - in /xmlgraphics/commons/trunk/src: main/java/org/apache/xmlgraphics/ps/ImageEncodingHelper.java test/java/org/apache/xmlgraphics/ps/FormGeneratorTestCase.java

Author: ssteiner
Date: Thu Dec 23 14:30:49 2021
New Revision: 1896317

URL: http://svn.apache.org/viewvc?rev=1896317&view=rev
Log:
XGC-128: Remove image transparency for PS

Modified:
    xmlgraphics/commons/trunk/src/main/java/org/apache/xmlgraphics/ps/ImageEncodingHelper.java
    xmlgraphics/commons/trunk/src/test/java/org/apache/xmlgraphics/ps/FormGeneratorTestCase.java

Modified: xmlgraphics/commons/trunk/src/main/java/org/apache/xmlgraphics/ps/ImageEncodingHelper.java
URL: http://svn.apache.org/viewvc/xmlgraphics/commons/trunk/src/main/java/org/apache/xmlgraphics/ps/ImageEncodingHelper.java?rev=1896317&r1=1896316&r2=1896317&view=diff
==============================================================================
--- xmlgraphics/commons/trunk/src/main/java/org/apache/xmlgraphics/ps/ImageEncodingHelper.java (original)
+++ xmlgraphics/commons/trunk/src/main/java/org/apache/xmlgraphics/ps/ImageEncodingHelper.java Thu Dec 23 14:30:49 2021
@@ -19,6 +19,8 @@
 
 package org.apache.xmlgraphics.ps;
 
+import java.awt.Color;
+import java.awt.Graphics2D;
 import java.awt.color.ColorSpace;
 import java.awt.image.BufferedImage;
 import java.awt.image.ColorModel;
@@ -487,8 +489,18 @@ public class ImageEncodingHelper {
 
         private final RenderedImage img;
 
-        public RenderedImageEncoder(RenderedImage img) {
-            this.img = img;
+        public RenderedImageEncoder(RenderedImage ri) {
+            if (ri instanceof BufferedImage && ((BufferedImage) ri).getType() == BufferedImage.TYPE_4BYTE_ABGR) {
+                BufferedImage convertedImg =
+                        new BufferedImage(ri.getWidth(), ri.getHeight(), BufferedImage.TYPE_INT_RGB);
+                Graphics2D g = (Graphics2D) convertedImg.getGraphics();
+                g.setBackground(Color.WHITE);
+                g.clearRect(0, 0, ri.getWidth(), ri.getHeight());
+                g.drawImage((BufferedImage)ri, 0, 0, null);
+                g.dispose();
+                ri = convertedImg;
+            }
+            img = ri;
         }
 
         public void writeTo(OutputStream out) throws IOException {

Modified: xmlgraphics/commons/trunk/src/test/java/org/apache/xmlgraphics/ps/FormGeneratorTestCase.java
URL: http://svn.apache.org/viewvc/xmlgraphics/commons/trunk/src/test/java/org/apache/xmlgraphics/ps/FormGeneratorTestCase.java?rev=1896317&r1=1896316&r2=1896317&view=diff
==============================================================================
--- xmlgraphics/commons/trunk/src/test/java/org/apache/xmlgraphics/ps/FormGeneratorTestCase.java (original)
+++ xmlgraphics/commons/trunk/src/test/java/org/apache/xmlgraphics/ps/FormGeneratorTestCase.java Thu Dec 23 14:30:49 2021
@@ -21,9 +21,9 @@ package org.apache.xmlgraphics.ps;
 
 import java.awt.Color;
 import java.awt.Dimension;
+import java.awt.Graphics2D;
 import java.awt.color.ColorSpace;
 
-
 import java.awt.geom.Dimension2D;
 import java.awt.image.BufferedImage;
 
@@ -100,4 +100,28 @@ public class FormGeneratorTestCase {
         //FlateDecode at DataSource so executed on page load rather than document load so viewer loads faster
         Assert.assertTrue(test.contains("/DataSource form:Data /FlateDecode filter\n"));
     }
+
+    @Test
+    public void testAlphaImage() throws IOException {
+        Assert.assertEquals(buildPSImage(BufferedImage.TYPE_4BYTE_ABGR), buildPSImage(BufferedImage.TYPE_INT_RGB));
+    }
+
+    private String buildPSImage(int type) throws IOException {
+        Dimension2D dimension = new Dimension2DDouble(1, 1);
+        BufferedImage im = new BufferedImage(1, 1, type);
+        Graphics2D g = (Graphics2D) im.getGraphics();
+        if (type == BufferedImage.TYPE_4BYTE_ABGR) {
+            g.setBackground(new Color(0, 0, 0, 0));
+        } else {
+            g.setBackground(Color.white);
+        }
+        g.clearRect(0, 0, im.getWidth(), im.getHeight());
+        g.drawImage(im, 0, 0, null);
+        g.dispose();
+        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        ImageFormGenerator formImageGen = new  ImageFormGenerator("form", "title", dimension, im, false);
+        PSGenerator gen = new PSGenerator(out);
+        formImageGen.generate(gen);
+        return out.toString("utf-8");
+    }
 }



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