[
https://issues.apache.org/jira/browse/PDFBOX-4137?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16383796#comment-16383796
]
Itai Shaked commented on PDFBOX-4137:
-------------------------------------
I will take some time to go over what you wrote, but in the meanwhile - maybe
we need a better test case. I am attaching a file which is similar in
characteristics to the ones I originally had problems with (sadly I cannot
share the original files). The file is just the result of using imagemagick to
convert this picture from Wikipedia to a PDF:
[https://commons.wikimedia.org/wiki/File:Grand_Canyon_view_from_Pima_Point_2010.jpg]
Without the patch, on my machine, the debugger app takes about 1400ms to render
it. With the patch, with subsampling disabled it takes about 950ms, so that's
about 33% saved just from avoiding decoding twice (i.e. PDFBOX-3340). Enabling
subsampling, rendering at 100% goes down to about 200ms.
I think you are correct and it will indeed be more elegant and safe to use your
method and remove the meta-only part of the patch. I think when I started
working on it I wasn't sure what info was needed for repair and in which cases.
> Allow subsampled/downscaled rendering of images, and rendering subimages
> -------------------------------------------------------------------------
>
> Key: PDFBOX-4137
> URL: https://issues.apache.org/jira/browse/PDFBOX-4137
> Project: PDFBox
> Issue Type: Improvement
> Components: Rendering
> Affects Versions: 2.0.8
> Reporter: Itai Shaked
> Priority: Minor
> Attachments: 0001-Image-render-subsample.patch, 067445.pdf,
> image_rendering_subsampling_hack.patch, large-jpeg.pdf
>
>
> Suggested/contributed change to allow subsampling of images and rendering
> sub-regions of images.
> The need arises from having very large images which are highly compressed
> (usually JPEG or JBIG2). The current implementation decodes the entire image
> into memory at full resolution, even if rendering is done at a much lower
> resolution.
> Since the change required augmenting the way Filters work (to allow
> partial/subsampled decoding), it also includes a partial fix for PDFBOX-3340.
>
>
> This change introduces "DecodeOptions" which are currently only applicable
> for images. They include requesting only metadata (for PDImageXObject's
> repair method), subsampling and sub-region (similar to
> javax.imagio.ImageReadParam).
> Since not all filters can or do honor (use) the options, the DecodeOptions
> class contains a flag. Filters that honor the options (subsample / decode
> only requested region) set it to true. If the flag is false, the subsampling
> or cropping should be done after decoding, to ensure consistency.
> PageDrawer was modified so it uses subsampling based on the ratio of the
> desired output to the original image.
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]