You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ja...@apache.org on 2014/03/22 22:01:45 UTC

svn commit: r1580321 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceGray.java

Author: jahewson
Date: Sat Mar 22 21:01:45 2014
New Revision: 1580321

URL: http://svn.apache.org/r1580321
Log:
PDFBOX-1955: perform DeviceGray color conversion ourselves

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceGray.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceGray.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceGray.java?rev=1580321&r1=1580320&r2=1580321&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceGray.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceGray.java Sat Mar 22 21:01:45 2014
@@ -18,6 +18,8 @@ package org.apache.pdfbox.pdmodel.graphi
 
 import org.apache.pdfbox.cos.COSName;
 
+import java.awt.Color;
+import java.awt.Graphics2D;
 import java.awt.color.ColorSpace;
 import java.awt.image.BufferedImage;
 import java.awt.image.ColorConvertOp;
@@ -74,12 +76,31 @@ public final class PDDeviceGray extends 
     @Override
     public float[] toRGB(float[] value)
     {
-        return COLOR_SPACE_GRAY.toRGB(value);
+        return new float[] { value[0], value[0], value[0] };
     }
 
     @Override
     public BufferedImage toRGBImage(WritableRaster raster) throws IOException
     {
-        return toRGBImageAWT(raster, COLOR_SPACE_GRAY);
+        int width = raster.getWidth();
+        int height = raster.getHeight();
+
+        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
+
+        int[] gray = new int[1];
+        int[] rgb = new int[3];
+        for (int y = 0; y < height; y++)
+        {
+            for (int x = 0; x < width; x++)
+            {
+                raster.getPixel(x, y, gray);
+                rgb[0] = gray[0];
+                rgb[1] = gray[0];
+                rgb[2] = gray[0];
+                image.getRaster().setPixel(x, y, rgb);
+            }
+        }
+
+        return image;
     }
 }