diff --git a/src/ImageSharp/Formats/Tiff/README.md b/src/ImageSharp/Formats/Tiff/README.md index 9bc825f5b5..d668ed449b 100644 --- a/src/ImageSharp/Formats/Tiff/README.md +++ b/src/ImageSharp/Formats/Tiff/README.md @@ -23,30 +23,41 @@ ## Implementation Status +### Deviations from the TIFF spec (to be fixed) + +- Decoder + - A Baseline TIFF reader must skip over extra components (e.g. RGB with 4 samples per pixels) + - NB: Need to handle this for both planar and chunky data + - If the SampleFormat field is present and not 1 - fail gracefully if you cannot handle this + - Compression=None should treat 16/32-BitsPerSample for all samples as SHORT/LONG (for byte order and padding rows) + - RowsPerStrip should default to 2^32-1 (effectively infinity) to store the image as a single strip + - Check Planar format data - is this encoded as strips in order RGBRGBRGB or RRRGGGBBB? + - Make sure we ignore any strips that are not needed for the image (if too many are present) + ### Compression Formats | |Encoder|Decoder|Comments | |---------------------------|:-----:|:-----:|--------------------------| -|None | | | | +|None | | Y | | |Ccitt1D | | | | -|PackBits | | | | +|PackBits | | Y | | |CcittGroup3Fax | | | | |CcittGroup4Fax | | | | -|Lzw | | | | +|Lzw | | Y | Based on ImageSharp GIF LZW implementation - this code could be modified to be (i) shared, or (ii) optimised for each case | |Old Jpeg | | | | |Jpeg (Technote 2) | | | | -|Deflate (Technote 2) | | | | -|Old Deflate (Technote 2) | | | | +|Deflate (Technote 2) | | Y | | +|Old Deflate (Technote 2) | | Y | | ### Photometric Interpretation Formats | |Encoder|Decoder|Comments | |---------------------------|:-----:|:-----:|--------------------------| -|WhiteIsZero | | | | -|BlackIsZero | | | | -|Rgb (Chunky) | | | | -|Rgb (Planar) | | | | -|PaletteColor | | | | +|WhiteIsZero | | Y | General + 1/4/8-bit optimised implementations | +|BlackIsZero | | Y | General + 1/4/8-bit optimised implementations | +|Rgb (Chunky) | | Y | General + Rgb888 optimised implementation | +|Rgb (Planar) | | Y | General implementation only | +|PaletteColor | | Y | General implementation only | |TransparencyMask | | | | |Separated (TIFF Extension) | | | | |YCbCr (TIFF Extension) | | | | @@ -59,11 +70,11 @@ |---------------------------|:-----:|:-----:|--------------------------| |NewSubfileType | | | | |SubfileType | | | | -|ImageWidth | | | | -|ImageLength | | | | -|BitsPerSample | | | | -|Compression | | | | -|PhotometricInterpretation | | | | +|ImageWidth | | Y | | +|ImageLength | | Y | | +|BitsPerSample | | Y | | +|Compression | | Y | | +|PhotometricInterpretation | | Y | | |Threshholding | | | | |CellWidth | | | | |CellLength | | | | @@ -71,26 +82,26 @@ |ImageDescription | | | | |Make | | | | |Model | | | | -|StripOffsets | | | | +|StripOffsets | | Y | | |Orientation | | | | -|SamplesPerPixel | | | | -|RowsPerStrip | | | | -|StripByteCounts | | | | +|SamplesPerPixel | | | Currently ignored, as can be inferred from count of BitsPerSample | +|RowsPerStrip | | Y | | +|StripByteCounts | | Y | | |MinSampleValue | | | | |MaxSampleValue | | | | -|XResolution | | | | -|YResolution | | | | -|PlanarConfiguration | | | | +|XResolution | | Y | | +|YResolution | | Y | | +|PlanarConfiguration | | Y | | |FreeOffsets | | | | |FreeByteCounts | | | | |GrayResponseUnit | | | | |GrayResponseCurve | | | | -|ResolutionUnit | | | | +|ResolutionUnit | | Y | | |Software | | | | |DateTime | | | | |Artist | | | | |HostComputer | | | | -|ColorMap | | | | +|ColorMap | | Y | | |ExtraSamples | | | | |Copyright | | | |