[
https://issues.apache.org/jira/browse/IMAGING-312?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Gary Lucas updated IMAGING-312:
-------------------------------
Attachment: Imaging312.png
> Alpha-channel setting not interpreted from ExtraSamples tag
> -----------------------------------------------------------
>
> Key: IMAGING-312
> URL: https://issues.apache.org/jira/browse/IMAGING-312
> Project: Commons Imaging
> Issue Type: Bug
> Components: Format: TIFF
> Affects Versions: 1.0-alpha2
> Environment:
> Reporter: Gary Lucas
> Priority: Major
> Attachments: Imaging312.png
>
>
> Commons Imaging sometimes misinterprets TIFF files that have 4-byte RGB
> samples but do not define alpha. In some cases, these images are treated as
> semi-transparent when they should be opaque. Commons Imaging is not unique
> in this regard... Windows Photo Viewer does the same thing.
> The TIFF specification allows RGB images to be encoded with 4-bytes per
> pixel. It would be natural to assume (as Commons Imaging does) that the 4th
> byte is the alpha channel and that it would have values of 0xff in the case
> where pixels were opaque. However, the interpretation of the 4th byte depends
> on information in the TIFF "ExtraSamples" tag.
> It turns out that there are images in-the-wild that use 4 bytes, but populate
> the 4th byte with junk values. For example, there are a number of older
> aerial photographs from the US Geological Survey (USGS) that do this. These
> images give an ExtraSamples tag with a value of zero. But the TIFF
> specification calls for images to be treated as having alpha channels only if
> the ExtraSamples field carries a value of either 1 or 2. When ExtraSamples
> has a value of 0, the 4th byte is to be ignored.
> So while the USGS TIFF files are in compliance with the TIFF specification,
> they use an unintuitive behavior. Because the Commons Imaging library
> assumes that the 4th byte would be specified with valid-alpha values, it does
> not render the images correctly.
> There are many examples of this phenomenon on the USGS Earth Explorer
> website. One specific example:
> * High Resolution Orthoimagery
> * Dataset: 201203_connecticut_state_lot1_ct_0x3000m_utm_cnir
> * Entity: 2818289_18TYL425825
> * File: 18tyl425825.tif
> *Proposed Fix*
> I propose to do the following:
> * Extend the TiffImageParser logic for detecting alpha to assume hasAlpha is
> true if and only if the ExtraSamples tag is supplied and contains values 1 or
> 2.
> * Provide a hasAlpha accessor for the ImageBuilder class (is should really
> have one anyway)
> * Enhance the DataReaderStrips and DataReaderTiles classes to check hasAlpha
> when processing RGB images that have 4 samples per pixel samples.
> *Concerns*
> At this time, I am not sure what to do if an RGB TIFF image uses 4-samples
> per pixel but the ExtraSamples tag is not provided. At this time, I have not
> seen an example of this, but my collection of sample TIFF files is rather
> narrow and I would not rule it out.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)