force seek to beginning of file

This commit is contained in:
wiredfool 2013-03-14 13:25:23 -07:00
parent 1540d46ca9
commit 7d99141405
4 changed files with 55 additions and 15 deletions

View File

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

47
Tests/test_lena.py Normal file
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); dump_state(clientstate);
if (clientstate->fp) { if (clientstate->fp) {
TRACE(("Opening using fd: %d\n",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); tiff = TIFFFdOpen(clientstate->fp, filename, mode);
} else { } else {
TRACE(("Opening from string\n")); TRACE(("Opening from string\n"));

View File

@ -13,6 +13,11 @@
#include <tiff.h> #include <tiff.h>
#endif #endif
#ifndef _UNISTD_H
#include <unistd.h>
#endif
#ifndef min #ifndef min
#define min(x,y) (( x > y ) ? y : x ) #define min(x,y) (( x > y ) ? y : x )
#define max(x,y) (( x < y ) ? y : x ) #define max(x,y) (( x < y ) ? y : x )
@ -50,7 +55,7 @@ extern int ImagingLibTiffSetField(ImagingCodecState state, ttag_t tag, ...);
/* /*
#define TRACE(args) #define TRACE(args)
*/ */
#endif #endif /* _MSC_VER */