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

Gary Lucas commented on IMAGING-94:
-----------------------------------

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

Reply via email to