Use logging instead of print.

cf. #1191.

Only TiffImagePlugin and OLEFileIO still rely on (their own) DEBUG flag.
I left TiffImagePlugin as it is because I hope #1059 gets merged in
first, and OLEFileIO because it uses its own logic.

Untested, as usual.
This commit is contained in:
Antony Lee 2015-02-06 10:58:07 -08:00
parent 96944e2dd6
commit 4e754e9c55
11 changed files with 96 additions and 118 deletions

View File

@ -28,8 +28,11 @@ from __future__ import print_function
from PIL import VERSION, PILLOW_VERSION, _plugins from PIL import VERSION, PILLOW_VERSION, _plugins
import logging
import warnings import warnings
logger = logging.getLogger(__name__)
class DecompressionBombWarning(RuntimeWarning): class DecompressionBombWarning(RuntimeWarning):
pass pass
@ -138,11 +141,6 @@ def isImageType(t):
""" """
return hasattr(t, "im") return hasattr(t, "im")
#
# Debug level
DEBUG = 0
# #
# Constants (also defined in _imagingmodule.c!) # Constants (also defined in _imagingmodule.c!)
@ -386,13 +384,10 @@ def init():
for plugin in _plugins: for plugin in _plugins:
try: try:
if DEBUG: logger.debug("Importing %s", plugin)
print("Importing %s" % plugin)
__import__("PIL.%s" % plugin, globals(), locals(), []) __import__("PIL.%s" % plugin, globals(), locals(), [])
except ImportError: except ImportError as e:
if DEBUG: logger.debug("Image: failed to import %s: %s", plugin, e)
print("Image: failed to import", end=' ')
print(plugin, ":", sys.exc_info()[1])
if OPEN or SAVE: if OPEN or SAVE:
_initialized = 2 _initialized = 2
@ -554,8 +549,7 @@ class Image(object):
try: try:
self.fp.close() self.fp.close()
except Exception as msg: except Exception as msg:
if DEBUG: logger.debug("Error closing: %s" % msg)
print("Error closing: %s" % msg)
# Instead of simply setting to None, we're setting up a # Instead of simply setting to None, we're setting up a
# deferred error that will better explain that the core image # deferred error that will better explain that the core image

View File

@ -30,10 +30,13 @@
from PIL import Image from PIL import Image
from PIL._util import isPath from PIL._util import isPath
import io import io
import logging
import os import os
import sys import sys
import traceback import traceback
logger = logging.getLogger(__name__)
MAXBLOCK = 65536 MAXBLOCK = 65536
SAFEBLOCK = 1024*1024 SAFEBLOCK = 1024*1024
@ -95,21 +98,11 @@ class ImageFile(Image.Image):
try: try:
self._open() self._open()
except IndexError as v: # end of data except (IndexError, # end of data
if Image.DEBUG > 1: TypeError, # end of data (ord)
traceback.print_exc() KeyError, # unsupported mode
raise SyntaxError(v) EOFError) as v: # got header but not the first frame
except TypeError as v: # end of data (ord) logger.exception("%s")
if Image.DEBUG > 1:
traceback.print_exc()
raise SyntaxError(v)
except KeyError as v: # unsupported mode
if Image.DEBUG > 1:
traceback.print_exc()
raise SyntaxError(v)
except EOFError as v: # got header but not the first frame
if Image.DEBUG > 1:
traceback.print_exc()
raise SyntaxError(v) raise SyntaxError(v)
if not self.mode or self.size[0] <= 0: if not self.mode or self.size[0] <= 0:

View File

@ -27,8 +27,11 @@
from __future__ import print_function from __future__ import print_function
import logging
from PIL import Image, ImageFile, ImagePalette, _binary from PIL import Image, ImageFile, ImagePalette, _binary
logger = logging.getLogger(__name__)
i8 = _binary.i8 i8 = _binary.i8
i16 = _binary.i16le i16 = _binary.i16le
o8 = _binary.o8 o8 = _binary.o8
@ -59,17 +62,15 @@ class PcxImageFile(ImageFile.ImageFile):
bbox = i16(s, 4), i16(s, 6), i16(s, 8)+1, i16(s, 10)+1 bbox = i16(s, 4), i16(s, 6), i16(s, 8)+1, i16(s, 10)+1
if bbox[2] <= bbox[0] or bbox[3] <= bbox[1]: if bbox[2] <= bbox[0] or bbox[3] <= bbox[1]:
raise SyntaxError("bad PCX image size") raise SyntaxError("bad PCX image size")
if Image.DEBUG: logger.debug("BBox: %s %s %s %s", *bbox)
print("BBox: %s %s %s %s" % bbox)
# format # format
version = i8(s[1]) version = i8(s[1])
bits = i8(s[3]) bits = i8(s[3])
planes = i8(s[65]) planes = i8(s[65])
stride = i16(s, 66) stride = i16(s, 66)
if Image.DEBUG: logger.debug("PCX version %s, bits %s, planes %s, stride %s",
print("PCX version %s, bits %s, planes %s, stride %s" % version, bits, planes, stride)
(version, bits, planes, stride))
self.info["dpi"] = i16(s, 12), i16(s, 14) self.info["dpi"] = i16(s, 12), i16(s, 14)
@ -107,8 +108,7 @@ class PcxImageFile(ImageFile.ImageFile):
self.size = bbox[2]-bbox[0], bbox[3]-bbox[1] self.size = bbox[2]-bbox[0], bbox[3]-bbox[1]
bbox = (0, 0) + self.size bbox = (0, 0) + self.size
if Image.DEBUG: logger.debug("size: %sx%s", *self.size)
print("size: %sx%s" % self.size)
self.tile = [("pcx", bbox, self.fp.tell(), (rawmode, planes * stride))] self.tile = [("pcx", bbox, self.fp.tell(), (rawmode, planes * stride))]
@ -144,9 +144,8 @@ def _save(im, fp, filename, check=0):
# Ideally it should be passed in in the state, but the bytes value # Ideally it should be passed in in the state, but the bytes value
# gets overwritten. # gets overwritten.
if Image.DEBUG: logger.debug("PcxImagePlugin._save: xwidth: %d, bits: %d, stride: %d",
print("PcxImagePlugin._save: xwidth: %d, bits: %d, stride: %d" % ( im.size[0], bits, stride)
im.size[0], bits, stride))
# under windows, we could determine the current screen size with # under windows, we could determine the current screen size with
# "Image.core.display_mode()[1]", but I think that's overkill... # "Image.core.display_mode()[1]", but I think that's overkill...

View File

@ -35,10 +35,13 @@ from __future__ import print_function
__version__ = "0.9" __version__ = "0.9"
import logging
import re import re
import zlib
from PIL import Image, ImageFile, ImagePalette, _binary from PIL import Image, ImageFile, ImagePalette, _binary
import zlib
logger = logging.getLogger(__name__)
i8 = _binary.i8 i8 = _binary.i8
i16 = _binary.i16be i16 = _binary.i16be
@ -129,8 +132,7 @@ class ChunkStream(object):
def call(self, cid, pos, length): def call(self, cid, pos, length):
"Call the appropriate chunk handler" "Call the appropriate chunk handler"
if Image.DEBUG: logger.debug("STREAM %s %s %s", cid, pos, length)
print("STREAM", cid, pos, length)
return getattr(self, "chunk_" + cid.decode('ascii'))(pos, length) return getattr(self, "chunk_" + cid.decode('ascii'))(pos, length)
def crc(self, cid, data): def crc(self, cid, data):
@ -293,9 +295,8 @@ class PngStream(ChunkStream):
# Compression method 1 byte (0) # Compression method 1 byte (0)
# Compressed profile n bytes (zlib with deflate compression) # Compressed profile n bytes (zlib with deflate compression)
i = s.find(b"\0") i = s.find(b"\0")
if Image.DEBUG: logger.debug("iCCP profile name %s", s[:i])
print("iCCP profile name", s[:i]) logger.debug("Compression method %s", i8(s[i]))
print("Compression method", i8(s[i]))
comp_method = i8(s[i]) comp_method = i8(s[i])
if comp_method != 0: if comp_method != 0:
raise SyntaxError("Unknown compression method %s in iCCP chunk" % raise SyntaxError("Unknown compression method %s in iCCP chunk" %
@ -507,8 +508,7 @@ class PngImageFile(ImageFile.ImageFile):
except EOFError: except EOFError:
break break
except AttributeError: except AttributeError:
if Image.DEBUG: logger.debug("%s %s %s (unknown)", cid, pos, length)
print(cid, pos, length, "(unknown)")
s = ImageFile._safe_read(self.fp, length) s = ImageFile._safe_read(self.fp, length)
self.png.crc(cid, s) self.png.crc(cid, s)

View File

@ -22,10 +22,14 @@
from __future__ import print_function from __future__ import print_function
from cffi import FFI import logging
import sys import sys
DEBUG = 0 from cffi import FFI
logger = logging.getLogger(__name__)
defs = """ defs = """
struct Pixel_RGBA { struct Pixel_RGBA {
@ -50,8 +54,7 @@ class PyAccess(object):
self.xsize = vals['xsize'] self.xsize = vals['xsize']
self.ysize = vals['ysize'] self.ysize = vals['ysize']
if DEBUG: logger.debug("%s", vals)
print(vals)
self._post_init() self._post_init()
def _post_init(self): def _post_init(self):
@ -305,11 +308,9 @@ else:
def new(img, readonly=False): def new(img, readonly=False):
access_type = mode_map.get(img.mode, None) access_type = mode_map.get(img.mode, None)
if not access_type: if not access_type:
if DEBUG: logger.debug("PyAccess Not Implemented: %s", img.mode)
print("PyAccess Not Implemented: %s" % img.mode)
return None return None
if DEBUG: logger.debug("New PyAccess: %s", img.mode)
print("New PyAccess: %s" % img.mode)
return access_type(img, readonly) return access_type(img, readonly)
# End of file # End of file

View File

@ -42,6 +42,7 @@
from __future__ import print_function from __future__ import print_function
__version__ = "1.3.5" __version__ = "1.3.5"
DEBUG = False # Needs to be merged with the new logging approach.
from PIL import Image, ImageFile from PIL import Image, ImageFile
from PIL import ImagePalette from PIL import ImagePalette
@ -434,7 +435,7 @@ class ImageFileDirectory(collections.MutableMapping):
tag, typ = i16(ifd), i16(ifd, 2) tag, typ = i16(ifd), i16(ifd, 2)
if Image.DEBUG: if DEBUG:
from PIL import TiffTags from PIL import TiffTags
tagname = TiffTags.TAGS.get(tag, "unknown") tagname = TiffTags.TAGS.get(tag, "unknown")
typname = TiffTags.TYPES.get(typ, "unknown") typname = TiffTags.TYPES.get(typ, "unknown")
@ -444,7 +445,7 @@ class ImageFileDirectory(collections.MutableMapping):
try: try:
dispatch = self.load_dispatch[typ] dispatch = self.load_dispatch[typ]
except KeyError: except KeyError:
if Image.DEBUG: if DEBUG:
print("- unsupported type", typ) print("- unsupported type", typ)
continue # ignore unsupported type continue # ignore unsupported type
@ -455,10 +456,10 @@ class ImageFileDirectory(collections.MutableMapping):
# Get and expand tag value # Get and expand tag value
if size > 4: if size > 4:
here = fp.tell() here = fp.tell()
if Image.DEBUG: if DEBUG:
print("Tag Location: %s" % here) print("Tag Location: %s" % here)
fp.seek(i32(ifd, 8)) fp.seek(i32(ifd, 8))
if Image.DEBUG: if DEBUG:
print("Data Location: %s" % fp.tell()) print("Data Location: %s" % fp.tell())
data = ImageFile._safe_read(fp, size) data = ImageFile._safe_read(fp, size)
fp.seek(here) fp.seek(here)
@ -474,7 +475,7 @@ class ImageFileDirectory(collections.MutableMapping):
self.tagdata[tag] = data self.tagdata[tag] = data
self.tagtype[tag] = typ self.tagtype[tag] = typ
if Image.DEBUG: if DEBUG:
if tag in (COLORMAP, IPTC_NAA_CHUNK, PHOTOSHOP_CHUNK, if tag in (COLORMAP, IPTC_NAA_CHUNK, PHOTOSHOP_CHUNK,
ICCPROFILE, XMP): ICCPROFILE, XMP):
print("- value: <table: %d bytes>" % size) print("- value: <table: %d bytes>" % size)
@ -517,8 +518,8 @@ class ImageFileDirectory(collections.MutableMapping):
if tag in self.tagtype: if tag in self.tagtype:
typ = self.tagtype[tag] typ = self.tagtype[tag]
if Image.DEBUG: if DEBUG:
print("Tag %s, Type: %s, Value: %s" % (tag, typ, value)) print ("Tag %s, Type: %s, Value: %s" % (tag, typ, value))
if typ == 1: if typ == 1:
# byte data # byte data
@ -571,7 +572,7 @@ class ImageFileDirectory(collections.MutableMapping):
else: else:
data = b"".join(map(o32, value)) data = b"".join(map(o32, value))
if Image.DEBUG: if DEBUG:
from PIL import TiffTags from PIL import TiffTags
tagname = TiffTags.TAGS.get(tag, "unknown") tagname = TiffTags.TAGS.get(tag, "unknown")
typname = TiffTags.TYPES.get(typ, "unknown") typname = TiffTags.TYPES.get(typ, "unknown")
@ -608,7 +609,7 @@ class ImageFileDirectory(collections.MutableMapping):
# pass 2: write directory to file # pass 2: write directory to file
for tag, typ, count, value, data in directory: for tag, typ, count, value, data in directory:
if Image.DEBUG > 1: if DEBUG > 1:
print(tag, typ, count, repr(value), repr(data)) print(tag, typ, count, repr(value), repr(data))
fp.write(o16(tag) + o16(typ) + o32(count) + value) fp.write(o16(tag) + o16(typ) + o32(count) + value)
@ -651,10 +652,10 @@ class TiffImageFile(ImageFile.ImageFile):
self._frame_pos = [] self._frame_pos = []
self._n_frames = None self._n_frames = None
if Image.DEBUG: if DEBUG:
print("*** TiffImageFile._open ***") print ("*** TiffImageFile._open ***")
print("- __first:", self.__first) print ("- __first:", self.__first)
print("- ifh: ", ifh) print ("- ifh: ", ifh)
# and load the first frame # and load the first frame
self._seek(0) self._seek(0)
@ -685,7 +686,7 @@ class TiffImageFile(ImageFile.ImageFile):
while len(self._frame_pos) <= frame: while len(self._frame_pos) <= frame:
if not self.__next: if not self.__next:
raise EOFError("no more images in TIFF file") raise EOFError("no more images in TIFF file")
if Image.DEBUG: if DEBUG:
print("Seeking to frame %s, on frame %s, __next %s, location: %s" % print("Seeking to frame %s, on frame %s, __next %s, location: %s" %
(frame, self.__frame, self.__next, self.fp.tell())) (frame, self.__frame, self.__next, self.fp.tell()))
# reset python3 buffered io handle in case fp # reset python3 buffered io handle in case fp
@ -693,7 +694,7 @@ class TiffImageFile(ImageFile.ImageFile):
self.fp.tell() self.fp.tell()
self.fp.seek(self.__next) self.fp.seek(self.__next)
self._frame_pos.append(self.__next) self._frame_pos.append(self.__next)
if Image.DEBUG: if DEBUG:
print("Loading tags, location: %s" % self.fp.tell()) print("Loading tags, location: %s" % self.fp.tell())
self.tag.load(self.fp) self.tag.load(self.fp)
self.__next = self.tag.next self.__next = self.tag.next
@ -771,20 +772,20 @@ class TiffImageFile(ImageFile.ImageFile):
# Rearranging for supporting byteio items, since they have a fileno # Rearranging for supporting byteio items, since they have a fileno
# that returns an IOError if there's no underlying fp. Easier to # that returns an IOError if there's no underlying fp. Easier to
# deal with here by reordering. # deal with here by reordering.
if Image.DEBUG: if DEBUG:
print("have getvalue. just sending in a string from getvalue") print ("have getvalue. just sending in a string from getvalue")
n, err = decoder.decode(self.fp.getvalue()) n, err = decoder.decode(self.fp.getvalue())
elif hasattr(self.fp, "fileno"): elif hasattr(self.fp, "fileno"):
# we've got a actual file on disk, pass in the fp. # we've got a actual file on disk, pass in the fp.
if Image.DEBUG: if DEBUG:
print("have fileno, calling fileno version of the decoder.") print ("have fileno, calling fileno version of the decoder.")
self.fp.seek(0) self.fp.seek(0)
# 4 bytes, otherwise the trace might error out # 4 bytes, otherwise the trace might error out
n, err = decoder.decode(b"fpfp") n, err = decoder.decode(b"fpfp")
else: else:
# we have something else. # we have something else.
if Image.DEBUG: if DEBUG:
print("don't have fileno or getvalue. just reading") print ("don't have fileno or getvalue. just reading")
# UNDONE -- so much for that buffer size thing. # UNDONE -- so much for that buffer size thing.
n, err = decoder.decode(self.fp.read()) n, err = decoder.decode(self.fp.read())
@ -821,7 +822,7 @@ class TiffImageFile(ImageFile.ImageFile):
fillorder = getscalar(FILLORDER, 1) fillorder = getscalar(FILLORDER, 1)
if Image.DEBUG: if DEBUG:
print("*** Summary ***") print("*** Summary ***")
print("- compression:", self._compression) print("- compression:", self._compression)
print("- photometric_interpretation:", photo) print("- photometric_interpretation:", photo)
@ -833,7 +834,7 @@ class TiffImageFile(ImageFile.ImageFile):
ysize = getscalar(IMAGELENGTH) ysize = getscalar(IMAGELENGTH)
self.size = xsize, ysize self.size = xsize, ysize
if Image.DEBUG: if DEBUG:
print("- size:", self.size) print("- size:", self.size)
format = getscalar(SAMPLEFORMAT, 1) format = getscalar(SAMPLEFORMAT, 1)
@ -844,16 +845,16 @@ class TiffImageFile(ImageFile.ImageFile):
self.tag.get(BITSPERSAMPLE, (1,)), self.tag.get(BITSPERSAMPLE, (1,)),
self.tag.get(EXTRASAMPLES, ()) self.tag.get(EXTRASAMPLES, ())
) )
if Image.DEBUG: if DEBUG:
print("format key:", key) print("format key:", key)
try: try:
self.mode, rawmode = OPEN_INFO[key] self.mode, rawmode = OPEN_INFO[key]
except KeyError: except KeyError:
if Image.DEBUG: if DEBUG:
print("- unsupported format") print("- unsupported format")
raise SyntaxError("unknown pixel mode") raise SyntaxError("unknown pixel mode")
if Image.DEBUG: if DEBUG:
print("- raw mode:", rawmode) print("- raw mode:", rawmode)
print("- pil mode:", self.mode) print("- pil mode:", self.mode)
@ -893,7 +894,7 @@ class TiffImageFile(ImageFile.ImageFile):
"tiff_sgilog", "tiff_sgilog",
"tiff_sgilog24", "tiff_sgilog24",
"tiff_raw_16"]: "tiff_raw_16"]:
# if Image.DEBUG: # if DEBUG:
# print "Activating g4 compression for whole file" # print "Activating g4 compression for whole file"
# Decoder expects entire file as one tile. # Decoder expects entire file as one tile.
@ -934,7 +935,7 @@ class TiffImageFile(ImageFile.ImageFile):
self.tag.get(BITSPERSAMPLE, (1,)), self.tag.get(BITSPERSAMPLE, (1,)),
self.tag.get(EXTRASAMPLES, ()) self.tag.get(EXTRASAMPLES, ())
) )
if Image.DEBUG: if DEBUG:
print("format key:", key) print("format key:", key)
# this should always work, since all the # this should always work, since all the
# fillorder==2 modes have a corresponding # fillorder==2 modes have a corresponding
@ -963,8 +964,8 @@ class TiffImageFile(ImageFile.ImageFile):
(self._compression, (self._compression,
(0, min(y, ysize), w, min(y+h, ysize)), (0, min(y, ysize), w, min(y+h, ysize)),
offsets[i], a)) offsets[i], a))
if Image.DEBUG: if DEBUG:
print("tiles: ", self.tile) print ("tiles: ", self.tile)
y = y + h y = y + h
if y >= self.size[1]: if y >= self.size[1]:
x = y = 0 x = y = 0
@ -992,7 +993,7 @@ class TiffImageFile(ImageFile.ImageFile):
l += 1 l += 1
a = None a = None
else: else:
if Image.DEBUG: if DEBUG:
print("- unsupported data organization") print("- unsupported data organization")
raise SyntaxError("unknown data organization") raise SyntaxError("unknown data organization")
@ -1073,7 +1074,7 @@ def _save(im, fp, filename):
# write any arbitrary tags passed in as an ImageFileDirectory # write any arbitrary tags passed in as an ImageFileDirectory
info = im.encoderinfo.get("tiffinfo", {}) info = im.encoderinfo.get("tiffinfo", {})
if Image.DEBUG: if DEBUG:
print("Tiffinfo Keys: %s" % info.keys) print("Tiffinfo Keys: %s" % info.keys)
keys = list(info.keys()) keys = list(info.keys())
for key in keys: for key in keys:
@ -1148,9 +1149,9 @@ def _save(im, fp, filename):
ifd[COMPRESSION] = COMPRESSION_INFO_REV.get(compression, 1) ifd[COMPRESSION] = COMPRESSION_INFO_REV.get(compression, 1)
if libtiff: if libtiff:
if Image.DEBUG: if DEBUG:
print("Saving using libtiff encoder") print ("Saving using libtiff encoder")
print(ifd.items()) print (ifd.items())
_fp = 0 _fp = 0
if hasattr(fp, "fileno"): if hasattr(fp, "fileno"):
try: try:
@ -1206,8 +1207,8 @@ def _save(im, fp, filename):
# int or similar # int or similar
atts[k] = v atts[k] = v
if Image.DEBUG: if DEBUG:
print(atts) print (atts)
# libtiff always expects the bytes in native order. # libtiff always expects the bytes in native order.
# we're storing image byte order. So, if the rawmode # we're storing image byte order. So, if the rawmode

View File

@ -21,6 +21,7 @@ from __future__ import print_function
import getopt import getopt
import glob import glob
import logging
import sys import sys
from PIL import Image from PIL import Image
@ -42,6 +43,7 @@ except getopt.error as v:
sys.exit(1) sys.exit(1)
verbose = quiet = verify = 0 verbose = quiet = verify = 0
logging_level = "WARNING"
for o, a in opt: for o, a in opt:
if o == "-f": if o == "-f":
@ -58,7 +60,9 @@ for o, a in opt:
elif o == "-v": elif o == "-v":
verify = 1 verify = 1
elif o == "-D": elif o == "-D":
Image.DEBUG += 1 logging_level = "DEBUG"
logging.basicConfig(level=logging_level)
def globfix(files): def globfix(files):

View File

@ -15,9 +15,6 @@ from PIL import Image, ImageTk
import sys import sys
Image.DEBUG = 0
# -------------------------------------------------------------------- # --------------------------------------------------------------------
# an image animation player # an image animation player

View File

@ -1,11 +1,14 @@
from __future__ import print_function from __future__ import print_function
from helper import unittest, PillowTestCase, hopper, py3 from helper import unittest, PillowTestCase, hopper, py3
import os
import io import io
import logging
import os
from PIL import Image, TiffImagePlugin from PIL import Image, TiffImagePlugin
logger = logging.getLogger(__name__)
class LibTiffTestCase(PillowTestCase): class LibTiffTestCase(PillowTestCase):
@ -231,7 +234,6 @@ class TestFileLibTiff(LibTiffTestCase):
""" Are we generating the same interpretation """ Are we generating the same interpretation
of the image as Imagemagick is? """ of the image as Imagemagick is? """
TiffImagePlugin.READ_LIBTIFF = True TiffImagePlugin.READ_LIBTIFF = True
# Image.DEBUG = True
im = Image.open('Tests/images/12bit.cropped.tif') im = Image.open('Tests/images/12bit.cropped.tif')
im.load() im.load()
TiffImagePlugin.READ_LIBTIFF = False TiffImagePlugin.READ_LIBTIFF = False
@ -243,14 +245,8 @@ class TestFileLibTiff(LibTiffTestCase):
im2 = Image.open('Tests/images/12in16bit.tif') im2 = Image.open('Tests/images/12in16bit.tif')
if Image.DEBUG: logger.debug("%s", [img.getpixel((0, idx))
print(im.getpixel((0, 0))) for img in [im, im2] for idx in range(3)])
print(im.getpixel((0, 1)))
print(im.getpixel((0, 2)))
print(im2.getpixel((0, 0)))
print(im2.getpixel((0, 1)))
print(im2.getpixel((0, 2)))
self.assert_image_equal(im, im2) self.assert_image_equal(im, im2)

View File

@ -1,9 +1,12 @@
from __future__ import print_function from __future__ import print_function
import logging
import struct
from helper import unittest, PillowTestCase, hopper, py3 from helper import unittest, PillowTestCase, hopper, py3
from PIL import Image, TiffImagePlugin from PIL import Image, TiffImagePlugin
import struct logger = logging.getLogger(__name__)
class TestFileTiff(PillowTestCase): class TestFileTiff(PillowTestCase):
@ -118,7 +121,6 @@ class TestFileTiff(PillowTestCase):
""" Are we generating the same interpretation """ Are we generating the same interpretation
of the image as Imagemagick is? """ of the image as Imagemagick is? """
# Image.DEBUG = True
im = Image.open('Tests/images/12bit.cropped.tif') im = Image.open('Tests/images/12bit.cropped.tif')
# to make the target -- # to make the target --
@ -129,14 +131,8 @@ class TestFileTiff(PillowTestCase):
im2 = Image.open('Tests/images/12in16bit.tif') im2 = Image.open('Tests/images/12in16bit.tif')
if Image.DEBUG: logger.debug("%s", [img.getpixel((0, idx))
print(im.getpixel((0, 0))) for img in [im, im2] for idx in range(3)])
print(im.getpixel((0, 1)))
print(im.getpixel((0, 2)))
print(im2.getpixel((0, 0)))
print(im2.getpixel((0, 1)))
print(im2.getpixel((0, 2)))
self.assert_image_equal(im, im2) self.assert_image_equal(im, im2)

View File

@ -23,14 +23,11 @@ class TestImageSequence(PillowTestCase):
self.assertEqual(index, 1) self.assertEqual(index, 1)
def _test_multipage_tiff(self, dbg=False): def _test_multipage_tiff(self, dbg=False):
# debug had side effect of calling fp.tell.
Image.DEBUG = dbg
im = Image.open('Tests/images/multipage.tiff') im = Image.open('Tests/images/multipage.tiff')
for index, frame in enumerate(ImageSequence.Iterator(im)): for index, frame in enumerate(ImageSequence.Iterator(im)):
frame.load() frame.load()
self.assertEqual(index, im.tell()) self.assertEqual(index, im.tell())
frame.convert('RGB') frame.convert('RGB')
Image.DEBUG = False
def test_tiff(self): def test_tiff(self):
# self._test_multipage_tiff(True) # self._test_multipage_tiff(True)