[ 
https://issues.apache.org/jira/browse/PDFBOX-4831?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17295557#comment-17295557
 ] 

Gábor Stefanik commented on PDFBOX-4831:
----------------------------------------

Looking into outside-in.pdf in PDFXplorer, Adobe Reader and the proposed patch 
are doing the right thing, as far as accurately rendering the PDF goes. The 
embedded images are both marked as not to be interpolated when scaling. The 
result may be less visually pleasing to a typical viewer, but it is indeed what 
the author intended, or at least what the document actually necodes.

While a good argument can be made for ignoring the author's intent for better 
visual results in this case, such a decision needs to be restricted to 
grayscale and true-color images, with indexed-color and binary images excluded, 
so as to avoid introducing unintended colors and transitions into an image (see 
mori-cvpr01.pdf for a rather extreme example). Either way, it doesn't make 
sense to base that decision on whether the image's resolution is higher than 
72DPI, and such a decision should be made separately and explicitly in the 
code, and not as a side effect of another check intended to stop 
nearest-neighbor downscaling (and thus information loss) in CCITT images.

> Rounding errors when rendering non-interleaved binary CCITT image at 1:1 
> scale cause gray pixels in output
> ----------------------------------------------------------------------------------------------------------
>
>                 Key: PDFBOX-4831
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-4831
>             Project: PDFBox
>          Issue Type: Bug
>          Components: Rendering
>    Affects Versions: 2.0.19
>            Reporter: Gábor Stefanik
>            Priority: Major
>         Attachments: 13._Korona_szallo_vegzes_13.09.26.eredeti-1.png, 
> 13._Korona_szallo_vegzes_13.09.26.eredeti.pdf, outside-in.pdf
>
>
> I have a 300dpi scanned PDF file with a single CCITT-encoded black-and-white 
> image in each page, spanning the whole page. The images all have a resolution 
> of 2480x3504.
>  
> When I try to render a page from this PDF into a PNG at 300DPI, the resulting 
> PNG has some pixels with colors #010101 and #fefefe. The PNG has the same 
> 2480x3504 dimensions as the embedded CCITT images, but stepping through the 
> PDFBox code reveals it's trying to downscale the image by a tiny fraction of 
> a pixel (e.g. to 2479.999964573x3503.9999537378) using bicubic interpolation, 
> introducing these "near-black" and "near-white" pixels due to rounding 
> errors. Additionally, the actual image conversion code goes to a slow path 
> intended for "proper" interpolated scaling, rather than hitting the fast path 
> for copying 1:1-scale images.
>  
> For now, we worked around this by treating images containing only #000000, 
> #010101, #fefefe and #ffffff as binary, but the performance hit from the slow 
> path is still there.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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

Reply via email to