From a1da419f1adfb7c6e55f06f332256b84d6f7c30b Mon Sep 17 00:00:00 2001 From: Nigel Tao Date: Mon, 2 Jun 2014 14:51:51 +1000 Subject: [PATCH] go.image/tiff: fix (TIFF-specific) LZW decompression. The blue-purple-pink.lzwcompressed.tiff image was created by "bmp2tiff -c lzw". LGTM=djd R=djd CC=bsiegert, golang-codereviews https://golang.org/cl/105750045 --- testdata/blue-purple-pink.lzwcompressed.tiff | Bin 0 -> 38994 bytes testdata/blue-purple-pink.png | Bin 0 -> 25003 bytes tiff/lzw/reader.go | 33 +++++++++++++++---- tiff/reader.go | 3 +- tiff/reader_test.go | 15 +++++++++ 5 files changed, 43 insertions(+), 8 deletions(-) create mode 100644 testdata/blue-purple-pink.lzwcompressed.tiff create mode 100644 testdata/blue-purple-pink.png diff --git a/testdata/blue-purple-pink.lzwcompressed.tiff b/testdata/blue-purple-pink.lzwcompressed.tiff new file mode 100644 index 0000000000000000000000000000000000000000..5978f7a7cef598a931959d21a7064e36ba17b098 GIT binary patch literal 38994 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 d.overflow { + if d.hi+1 >= d.overflow { // NOTE: the "+1" is where TIFF's LZW differs from the standard algorithm. if d.width == maxWidth { d.last = decoderInvalidCode } else { diff --git a/tiff/reader.go b/tiff/reader.go index ea4f1f2..f4ccd23 100644 --- a/tiff/reader.go +++ b/tiff/reader.go @@ -8,7 +8,6 @@ package tiff import ( - "compress/lzw" "compress/zlib" "encoding/binary" "fmt" @@ -16,6 +15,8 @@ import ( "image/color" "io" "io/ioutil" + + "code.google.com/p/go.image/tiff/lzw" ) // A FormatError reports that the input is not a valid TIFF image. diff --git a/tiff/reader_test.go b/tiff/reader_test.go index d62e277..cceb7aa 100644 --- a/tiff/reader_test.go +++ b/tiff/reader_test.go @@ -125,6 +125,21 @@ func TestDecode(t *testing.T) { compare(t, img0, img4) } +// TestDecodeLZW tests that decoding a PNG image and a LZW-compressed TIFF image +// result in the same pixel data. +func TestDecodeLZW(t *testing.T) { + img0, err := load("blue-purple-pink.png") + if err != nil { + t.Fatal(err) + } + img1, err := load("blue-purple-pink.lzwcompressed.tiff") + if err != nil { + t.Fatal(err) + } + + compare(t, img0, img1) +} + // TestDecompress tests that decoding some TIFF images that use different // compression formats result in the same pixel data. func TestDecompress(t *testing.T) {