[ 
https://issues.apache.org/jira/browse/PDFBOX-3854?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Yannick Haser updated PDFBOX-3854:
----------------------------------
    Description: 
While converting a PDPage to a BufferedImage (using the PDFRenderer) 
Images-Resources located in the PDPage gets loaded in a WriteableRaster and a 
given Colorspace.

These get converted to a BufferedImage (with PDDeviceRGB.toRGBImage()). But the 
Type of the returing BufferedImage is with the given Raster and Colorspace 
always from Type "BufferedImage.TYPE_CUSTOM" instead of the expected 
"BufferedImage.TYPE_INT_RGB" for example.

Consequences:
Image-Processing-Operations with/on BufferedImages with TYPE_CUSTOM are not 
optimized in Java (slower) and partialy runs through "Synchronized" Blocks.
==> Converting different Documents in different Threads are blocking each other.

"Quick"-Fix for seeing a Performance-Improvement in a Multithreading 
Environment:

{code:title=PDDeviceRGB.java|borderStyle=solid}
@Override
        public BufferedImage toRGBImage(WritableRaster raster) throws 
IOException {
                init();
                ColorModel colorModel = new ComponentColorModel(awtColorSpace, 
false, false, Transparency.OPAQUE,
                                raster.getDataBuffer().getDataType());

                BufferedImage image = new BufferedImage(colorModel, raster, 
false, null);

                BufferedImage dest = new BufferedImage(image.getWidth(), 
image.getHeight(), BufferedImage.TYPE_INT_RGB);
                ColorConvertOp op = new 
ColorConvertOp(dest.getColorModel().getColorSpace(), null);
                return op.filter(image, dest);
        }
{code}


  was:
While converting a PDPage to a BufferedImage (using the PDFRenderer) 
Images-Resources located in the PDPage gets loaded in a WriteableRaster and a 
given Colorspace.

These get converted to a BufferedImage (with PDDeviceRGB.toRGBImage()). But the 
Type of the returing BufferedImage is with the given Raster and Colorspace 
always from Type "BufferedImage.TYPE_CUSTOM" instead of the expected 
"BufferedImage.TYPE_INT_RGB" for example.

Consequences:
Image-Processing-Operations with/on BufferedImages with TYPE_CUSTOM are not 
optimized in Java (slower) and partialy runs through "Synchronized" Blocks.
==> Converting different Documents in different Threads are blocking each other.

"Quick"-Fix for seeing a Performance-Improvement in a Multithreading 
Environment:

{code:title=PDDeviceRGB.java|borderStyle=solid}
@Override
        public BufferedImage toRGBImage(WritableRaster raster) throws 
IOException {
                init();
                ColorModel colorModel = new ComponentColorModel(awtColorSpace, 
false, false, Transparency.OPAQUE,
                                raster.getDataBuffer().getDataType());

                BufferedImage image = new BufferedImage(colorModel, raster, 
false, null);
                BufferedImage dest = new BufferedImage(image.getWidth(), 
image.getHeight(), BufferedImage.TYPE_INT_RGB);
                ColorConvertOp op = new 
ColorConvertOp(dest.getColorModel().getColorSpace(), null);
                return op.filter(image, dest);
        }
{code}



> PDDeviceRGB.toRGBImage does not return a RGB-Typed-Image
> --------------------------------------------------------
>
>                 Key: PDFBOX-3854
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-3854
>             Project: PDFBox
>          Issue Type: Bug
>            Reporter: Yannick Haser
>         Attachments: rgbImageExample0.pdf, Starter.java
>
>
> While converting a PDPage to a BufferedImage (using the PDFRenderer) 
> Images-Resources located in the PDPage gets loaded in a WriteableRaster and a 
> given Colorspace.
> These get converted to a BufferedImage (with PDDeviceRGB.toRGBImage()). But 
> the Type of the returing BufferedImage is with the given Raster and 
> Colorspace always from Type "BufferedImage.TYPE_CUSTOM" instead of the 
> expected "BufferedImage.TYPE_INT_RGB" for example.
> Consequences:
> Image-Processing-Operations with/on BufferedImages with TYPE_CUSTOM are not 
> optimized in Java (slower) and partialy runs through "Synchronized" Blocks.
> ==> Converting different Documents in different Threads are blocking each 
> other.
> "Quick"-Fix for seeing a Performance-Improvement in a Multithreading 
> Environment:
> {code:title=PDDeviceRGB.java|borderStyle=solid}
> @Override
>       public BufferedImage toRGBImage(WritableRaster raster) throws 
> IOException {
>               init();
>               ColorModel colorModel = new ComponentColorModel(awtColorSpace, 
> false, false, Transparency.OPAQUE,
>                               raster.getDataBuffer().getDataType());
>               BufferedImage image = new BufferedImage(colorModel, raster, 
> false, null);
>               BufferedImage dest = new BufferedImage(image.getWidth(), 
> image.getHeight(), BufferedImage.TYPE_INT_RGB);
>               ColorConvertOp op = new 
> ColorConvertOp(dest.getColorModel().getColorSpace(), null);
>               return op.filter(image, dest);
>       }
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to