You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Gary Lucas (JIRA)" <ji...@apache.org> on 2012/10/24 21:44:12 UTC

[jira] [Comment Edited] (IMAGING-94) Add ability to load partial TIFF images

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

Gary Lucas edited comment on IMAGING-94 at 10/24/12 7:44 PM:
-------------------------------------------------------------

Good idea.  The only reason I didn't use arraycopy was that I didn't think of it.

I just ran a quick test using both approaches and it doesn't actually seem to make much difference. System.arraycopy is actually about 0.1 percent slower. But on my computer there is so much other stuff running that it makes for a noisy testing environment, and that value is probably not statistically significant.

Given that the run times are so close, I am inclined to replace the code with the System.arraycopy call just for the sake of simplicity...   No sense adding complicated loops that you have to explain to people when a simple System method call works just as well and brings clarity to the code.
                
      was (Author: gwlucas):
    Good idea.  The only reason I didn't use arraycopy was that I didn't think of it.

I just ran a quick test using both approaches and it does actually seem to make much difference. System.arraycopy is actually about 0.1 percent slower. But on my computer there is so much other stuff running that it makes for a noisy testing environment, and that value is probably not statistically significant.

Given that the run times are so close, I am inclined to replace the code with the System.arraycopy call just for the sake of simplicity...   No sense adding complicated loops that you have to explain to people when a simple System method call works just as well and brings clarity to the code.
                  
> Add ability to load partial TIFF images
> ---------------------------------------
>
>                 Key: IMAGING-94
>                 URL: https://issues.apache.org/jira/browse/IMAGING-94
>             Project: Commons Imaging
>          Issue Type: New Feature
>          Components: Format: TIFF
>            Reporter: Gary Lucas
>         Attachments: LucasTrackerItem94_Oct14.patch
>
>
> For most Apache Commons Imaging applications, the easiest way to obtain a sub image from a file is to simply use the Imaging class to load it as a BufferedImage and then use BufferedImage’s getSubimage() method to extract the portion of the image you wish to use.  The TIFF format presents a special problem because it is very common to have huge images (100’s or even 1000’s of megapixel).  Examples include Landsat satellite images, global-scale GeoTIFF images, etc.  In such cases, loading the entire image into memory is not practical because it would require too much memory.  For example, I am currently working with a 21600 by 10800 image that requires more than 890 megabytes to store as a BufferedImage.  That value is pushing the limit of what I can configure Java to handle on my particular OS.
> I propose to implement features for TIFF files that would permit Commons Imaging to load a partial image of a TIFF file using only the amount memory actually needed to hold the sub-image.
> These changes would not interfere with normal operations of TIFF files and would not affect other image formats.  If there were a need for similar features for other image formats, they could be phased in through future changes.
> The specification for a sub-image would be through the use of the params argument in the getBufferedImage call as follows:
>         HashMap<String, Object> params = new HashMap<String, Object>();
>         params.put(TiffConstants.PARAM_KEY_SUBIMAGE_X, new Integer( x ));
>         params.put(TiffConstants.PARAM_KEY_SUBIMAGE_Y, new Integer( y ));
>         params.put(TiffConstants.PARAM_KEY_SUBIMAGE_WIDTH, new Integer(width));
>         params.put(TiffConstants.PARAM_KEY_SUBIMAGE_HEIGHT, new Integer(height));

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira