Merge pull request #122 from wiredfool/lena_g4

Lena g4 fix
This commit is contained in:
Alex Clark ☺ 2013-03-14 15:30:34 -07:00
commit a5ab2a6fa7
4 changed files with 57 additions and 17 deletions

View File

@ -114,17 +114,6 @@ def test_g4_tiff_bytesio():
assert_equal(im.size, (500,500))
_assert_noerr(im)
def xtest_g4_tiff_fail(): # UNDONE fails badly, unknown reason
"""The 128x128 lena image fails for some reason. Investigating"""
Image.DEBUG = 0
file = "Tests/images/lena_g4.tif"
im = Image.open(file)
assert_equal(im.size, (128,128))
_assert_noerr(im)
Image.DEBUG = 0
def test_g4_eq_png():
""" Checking that we're actually getting the data that we expect"""
png = Image.open('Tests/images/lena_bw_500.png')
@ -134,8 +123,6 @@ def test_g4_eq_png():
def test_g4_write():
"""Checking to see that the saved image is the same as what we wrote"""
Image.DEBUG = 0
file = "Tests/images/lena_g4_500.tif"
orig = Image.open(file)
@ -151,4 +138,3 @@ def test_g4_write():
assert_false(orig.tobytes() == reread.tobytes())
Image.DEBUG = 0

View File

@ -0,0 +1,47 @@
from tester import *
from PIL import Image
from test_file_tiff import _assert_noerr
""" The small lena image was failing on open in the libtiff
decoder because the file pointer was set to the wrong place
by a spurious seek. It wasn't failing with the byteio method.
It was fixed by forcing an lseek to the beginning of the
file just before reading in libtiff. These tests remain
to ensure that it stays fixed. """
def test_g4_lena_file():
"""Testing the open file load path"""
file = "Tests/images/lena_g4.tif"
with open(file,'rb') as f:
im = Image.open(f)
assert_equal(im.size, (128,128))
_assert_noerr(im)
def test_g4_lena_bytesio():
"""Testing the bytesio loading code path"""
from io import BytesIO
file = "Tests/images/lena_g4.tif"
s = BytesIO()
with open(file,'rb') as f:
s.write(f.read())
s.seek(0)
im = Image.open(s)
assert_equal(im.size, (128,128))
_assert_noerr(im)
def test_g4_lena():
"""The 128x128 lena image fails for some reason. Investigating"""
file = "Tests/images/lena_g4.tif"
im = Image.open(file)
assert_equal(im.size, (128,128))
_assert_noerr(im)

View File

@ -199,6 +199,7 @@ int ImagingLibTiffDecode(Imaging im, ImagingCodecState state, UINT8* buffer, int
dump_state(clientstate);
if (clientstate->fp) {
TRACE(("Opening using fd: %d\n",clientstate->fp));
lseek(clientstate->fp,0,SEEK_SET); // Sometimes, I get it set to the end.
tiff = TIFFFdOpen(clientstate->fp, filename, mode);
} else {
TRACE(("Opening from string\n"));

View File

@ -13,6 +13,11 @@
#include <tiff.h>
#endif
#ifndef _UNISTD_H
#include <unistd.h>
#endif
#ifndef min
#define min(x,y) (( x > y ) ? y : x )
#define max(x,y) (( x < y ) ? y : x )
@ -44,14 +49,15 @@ extern int ImagingLibTiffSetField(ImagingCodecState state, ttag_t tag, ...);
#else
/*
#define VA_ARGS(...) __VA_ARGS__
#define TRACE(args) fprintf(stderr, VA_ARGS args)
*/
#define TRACE(args)
#endif
#endif /* _MSC_VER */
#endif
#endif