You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-users@xmlgraphics.apache.org by Shane Witbeck <sh...@digitalsanctum.com> on 2014/06/20 05:19:18 UTC

NPE from GraphicsUtil.getAlphaRaster

Hi,   

We use FOP 1.0 for converting documents to PDF. In certain cases when the document contains an image that returns null from GraphicsUtil.getAlphaRaster, this results in a NPE shown below:

2014-06-19 10:08:12,932 [http-nio-8080-exec-4] [1:admin:REGULAR] ERROR org.apache.fop.area.AreaTreeModel - Error while rendering page 1
java.lang.NullPointerException: Parameter alpha must not be null
at org.apache.fop.pdf.AlphaRasterImage.<init>(AlphaRasterImage.java:53)
at org.apache.fop.pdf.AlphaRasterImage.<init>(AlphaRasterImage.java:67)
at org.apache.fop.render.pdf.ImageRenderedAdapter.setup(ImageRenderedAdapter.java:125)
at org.apache.fop.pdf.PDFDocument.addImage(PDFDocument.java:828)
at org.apache.fop.render.pdf.PDFImageHandlerRenderedImage.handleImage(PDFImageHandlerRenderedImage.java:80)
at org.apache.fop.render.intermediate.AbstractIFPainter.drawImage(AbstractIFPainter.java:227)
at org.apache.fop.render.intermediate.AbstractIFPainter.drawImage(AbstractIFPainter.java:183)
at org.apache.fop.render.intermediate.AbstractIFPainter.drawImageUsingImageHandler(AbstractIFPainter.java:148)
at org.apache.fop.render.intermediate.AbstractIFPainter.drawImageUsingURI(AbstractIFPainter.java:270)
at org.apache.fop.render.pdf.PDFPainter.drawImage(PDFPainter.java:146)
at org.apache.fop.render.intermediate.IFRenderer.drawImage(IFRenderer.java:1171)
at org.apache.fop.render.intermediate.IFRenderer.renderImage(IFRenderer.java:1158)
at org.apache.fop.render.AbstractRenderer.renderViewport(AbstractRenderer.java:741)
at org.apache.fop.render.AbstractPathOrientedRenderer.renderViewport(AbstractPathOrientedRenderer.java:709)
at org.apache.fop.render.intermediate.IFRenderer.renderViewport(IFRenderer.java:860)
at org.apache.fop.render.AbstractRenderer.renderInlineArea(AbstractRenderer.java:634)
at org.apache.fop.render.intermediate.IFRenderer.renderInlineArea(IFRenderer.java:912)



I have a possible fix patch for the org.apache.fop.pdf.AlphaRasterImage (line ~58) here:

/**
     * Create a alpha channel image.
     * Extracts the alpha channel from the RenderedImage and creates a new bitmap image
     * with the given data.
     *
     * @param k the key to be used to lookup the image
     * @param image the image (must have an alpha channel)
     */
    public AlphaRasterImage(String k, RenderedImage image) {
        this(k, getAlphaRaster(image));
    }

    private static java.awt.image.Raster getAlphaRaster(RenderedImage image) {
        java.awt.image.Raster raster = GraphicsUtil.getAlphaRaster(image);
        if (raster == null && image.getColorModel() instanceof IndexColorModel) {
            int width = image.getWidth();
            int height = image.getHeight();
            WritableRaster writableRaster = image.getColorModel().createCompatibleWritableRaster(width, height);
            image.copyData(writableRaster);
            return writableRaster;
        }
        return raster;
    }


This fixes the NPE but results in a muted image in the resulting PDF file. I’d like feedback on the possible fix as well as any ideas as to why the resulting image is muted.

Thanks in advance!  

-- Shane


Re: NPE from GraphicsUtil.getAlphaRaster

Posted by Pascal Sancho <ps...@gmail.com>.
I'm speaking about GraphicsUtil.getAlphaRaster(), of course.

2014-06-20 10:36 GMT+02:00 Pascal Sancho <ps...@gmail.com>:
> Note: I'm not sure getAlphaRaster() may return null. If true, your
> patch should be against xmlgraphics rather than fop.

-- 
pascal

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


Re: NPE from GraphicsUtil.getAlphaRaster

Posted by Pascal Sancho <ps...@gmail.com>.
Hi,

You should provide a test case (short xsl-fo + image causing NPE).

Did you test against FOP 1.1 or FOP trunk?

For submitting a Patch, please open a dedicated issue in Jira (see [1]
for further details).

Note: I'm not sure getAlphaRaster() may return null. If true, your
patch should be against xmlgraphics rather than fop.

[1] http://xmlgraphics.apache.org/fop/dev/#patches

2014-06-20 5:19 GMT+02:00 Shane Witbeck <sh...@digitalsanctum.com>:
> Hi,
>
> We use FOP 1.0 for converting documents to PDF. In certain cases when the
> document contains an image that returns null from
> GraphicsUtil.getAlphaRaster, this results in a NPE shown below:
>
> 2014-06-19 10:08:12,932 [http-nio-8080-exec-4] [1:admin:REGULAR] ERROR
> org.apache.fop.area.AreaTreeModel - Error while rendering page 1
> java.lang.NullPointerException: Parameter alpha must not be null
> at org.apache.fop.pdf.AlphaRasterImage.<init>(AlphaRasterImage.java:53)
> at org.apache.fop.pdf.AlphaRasterImage.<init>(AlphaRasterImage.java:67)
> at
> org.apache.fop.render.pdf.ImageRenderedAdapter.setup(ImageRenderedAdapter.java:125)
> at org.apache.fop.pdf.PDFDocument.addImage(PDFDocument.java:828)
> at
> org.apache.fop.render.pdf.PDFImageHandlerRenderedImage.handleImage(PDFImageHandlerRenderedImage.java:80)
> at
> org.apache.fop.render.intermediate.AbstractIFPainter.drawImage(AbstractIFPainter.java:227)
> at
> org.apache.fop.render.intermediate.AbstractIFPainter.drawImage(AbstractIFPainter.java:183)
> at
> org.apache.fop.render.intermediate.AbstractIFPainter.drawImageUsingImageHandler(AbstractIFPainter.java:148)
> at
> org.apache.fop.render.intermediate.AbstractIFPainter.drawImageUsingURI(AbstractIFPainter.java:270)
> at org.apache.fop.render.pdf.PDFPainter.drawImage(PDFPainter.java:146)
> at
> org.apache.fop.render.intermediate.IFRenderer.drawImage(IFRenderer.java:1171)
> at
> org.apache.fop.render.intermediate.IFRenderer.renderImage(IFRenderer.java:1158)
> at
> org.apache.fop.render.AbstractRenderer.renderViewport(AbstractRenderer.java:741)
> at
> org.apache.fop.render.AbstractPathOrientedRenderer.renderViewport(AbstractPathOrientedRenderer.java:709)
> at
> org.apache.fop.render.intermediate.IFRenderer.renderViewport(IFRenderer.java:860)
> at
> org.apache.fop.render.AbstractRenderer.renderInlineArea(AbstractRenderer.java:634)
> at
> org.apache.fop.render.intermediate.IFRenderer.renderInlineArea(IFRenderer.java:912)
>
>
> I have a possible fix patch for the org.apache.fop.pdf.AlphaRasterImage
> (line ~58) here:
>
> /**
>      * Create a alpha channel image.
>      * Extracts the alpha channel from the RenderedImage and creates a new
> bitmap image
>      * with the given data.
>      *
>      * @param k the key to be used to lookup the image
>      * @param image the image (must have an alpha channel)
>      */
>     public AlphaRasterImage(String k, RenderedImage image) {
>         this(k, getAlphaRaster(image));
>     }
>
>     private static java.awt.image.Raster getAlphaRaster(RenderedImage image)
> {
>         java.awt.image.Raster raster = GraphicsUtil.getAlphaRaster(image);
>         if (raster == null && image.getColorModel() instanceof
> IndexColorModel) {
>             int width = image.getWidth();
>             int height = image.getHeight();
>             WritableRaster writableRaster =
> image.getColorModel().createCompatibleWritableRaster(width, height);
>             image.copyData(writableRaster);
>             return writableRaster;
>         }
>         return raster;
>     }
>
> This fixes the NPE but results in a muted image in the resulting PDF file.
> I’d like feedback on the possible fix as well as any ideas as to why the
> resulting image is muted.
>
> Thanks in advance!
>
> -- Shane
>



-- 
pascal

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