mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-01-26 09:14:27 +03:00
Merge pull request #578 from wiredfool/xrange
Python3 issues in JpegImagePlugin
This commit is contained in:
commit
3e24bc684d
|
@ -442,7 +442,7 @@ samplings = {
|
||||||
}
|
}
|
||||||
|
|
||||||
def convert_dict_qtables(qtables):
|
def convert_dict_qtables(qtables):
|
||||||
qtables = [qtables[key] for key in xrange(len(qtables)) if qtables.has_key(key)]
|
qtables = [qtables[key] for key in range(len(qtables)) if key in qtables]
|
||||||
for idx, table in enumerate(qtables):
|
for idx, table in enumerate(qtables):
|
||||||
qtables[idx] = [table[i] for i in zigzag_index]
|
qtables[idx] = [table[i] for i in zigzag_index]
|
||||||
return qtables
|
return qtables
|
||||||
|
@ -504,7 +504,7 @@ def _save(im, fp, filename):
|
||||||
except ValueError:
|
except ValueError:
|
||||||
raise ValueError("Invalid quantization table")
|
raise ValueError("Invalid quantization table")
|
||||||
else:
|
else:
|
||||||
qtables = [lines[s:s+64] for s in xrange(0, len(lines), 64)]
|
qtables = [lines[s:s+64] for s in range(0, len(lines), 64)]
|
||||||
if isinstance(qtables, (tuple, list, dict)):
|
if isinstance(qtables, (tuple, list, dict)):
|
||||||
if isinstance(qtables, dict):
|
if isinstance(qtables, dict):
|
||||||
qtables = convert_dict_qtables(qtables)
|
qtables = convert_dict_qtables(qtables)
|
||||||
|
|
|
@ -10,9 +10,7 @@ codecs = dir(Image.core)
|
||||||
if "jpeg_encoder" not in codecs or "jpeg_decoder" not in codecs:
|
if "jpeg_encoder" not in codecs or "jpeg_decoder" not in codecs:
|
||||||
skip("jpeg support not available")
|
skip("jpeg support not available")
|
||||||
|
|
||||||
# sample jpeg stream
|
test_file = "Images/lena.jpg"
|
||||||
file = "Images/lena.jpg"
|
|
||||||
data = open(file, "rb").read()
|
|
||||||
|
|
||||||
def roundtrip(im, **options):
|
def roundtrip(im, **options):
|
||||||
out = BytesIO()
|
out = BytesIO()
|
||||||
|
@ -30,7 +28,7 @@ def test_sanity():
|
||||||
# internal version number
|
# internal version number
|
||||||
assert_match(Image.core.jpeglib_version, "\d+\.\d+$")
|
assert_match(Image.core.jpeglib_version, "\d+\.\d+$")
|
||||||
|
|
||||||
im = Image.open(file)
|
im = Image.open(test_file)
|
||||||
im.load()
|
im.load()
|
||||||
assert_equal(im.mode, "RGB")
|
assert_equal(im.mode, "RGB")
|
||||||
assert_equal(im.size, (128, 128))
|
assert_equal(im.size, (128, 128))
|
||||||
|
@ -40,7 +38,7 @@ def test_sanity():
|
||||||
|
|
||||||
def test_app():
|
def test_app():
|
||||||
# Test APP/COM reader (@PIL135)
|
# Test APP/COM reader (@PIL135)
|
||||||
im = Image.open(file)
|
im = Image.open(test_file)
|
||||||
assert_equal(im.applist[0],
|
assert_equal(im.applist[0],
|
||||||
("APP0", b"JFIF\x00\x01\x01\x00\x00\x01\x00\x01\x00\x00"))
|
("APP0", b"JFIF\x00\x01\x01\x00\x00\x01\x00\x01\x00\x00"))
|
||||||
assert_equal(im.applist[1], ("COM", b"Python Imaging Library"))
|
assert_equal(im.applist[1], ("COM", b"Python Imaging Library"))
|
||||||
|
@ -49,8 +47,8 @@ def test_app():
|
||||||
def test_cmyk():
|
def test_cmyk():
|
||||||
# Test CMYK handling. Thanks to Tim and Charlie for test data,
|
# Test CMYK handling. Thanks to Tim and Charlie for test data,
|
||||||
# Michael for getting me to look one more time.
|
# Michael for getting me to look one more time.
|
||||||
file = "Tests/images/pil_sample_cmyk.jpg"
|
f = "Tests/images/pil_sample_cmyk.jpg"
|
||||||
im = Image.open(file)
|
im = Image.open(f)
|
||||||
# the source image has red pixels in the upper left corner.
|
# the source image has red pixels in the upper left corner.
|
||||||
c, m, y, k = [x / 255.0 for x in im.getpixel((0, 0))]
|
c, m, y, k = [x / 255.0 for x in im.getpixel((0, 0))]
|
||||||
assert_true(c == 0.0 and m > 0.8 and y > 0.8 and k == 0.0)
|
assert_true(c == 0.0 and m > 0.8 and y > 0.8 and k == 0.0)
|
||||||
|
@ -66,7 +64,7 @@ def test_cmyk():
|
||||||
|
|
||||||
def test_dpi():
|
def test_dpi():
|
||||||
def test(xdpi, ydpi=None):
|
def test(xdpi, ydpi=None):
|
||||||
im = Image.open(file)
|
im = Image.open(test_file)
|
||||||
im = roundtrip(im, dpi=(xdpi, ydpi or xdpi))
|
im = roundtrip(im, dpi=(xdpi, ydpi or xdpi))
|
||||||
return im.info.get("dpi")
|
return im.info.get("dpi")
|
||||||
assert_equal(test(72), (72, 72))
|
assert_equal(test(72), (72, 72))
|
||||||
|
@ -80,9 +78,9 @@ def test_icc():
|
||||||
icc_profile = im1.info["icc_profile"]
|
icc_profile = im1.info["icc_profile"]
|
||||||
assert_equal(len(icc_profile), 3144)
|
assert_equal(len(icc_profile), 3144)
|
||||||
# Roundtrip via physical file.
|
# Roundtrip via physical file.
|
||||||
file = tempfile("temp.jpg")
|
f = tempfile("temp.jpg")
|
||||||
im1.save(file, icc_profile=icc_profile)
|
im1.save(f, icc_profile=icc_profile)
|
||||||
im2 = Image.open(file)
|
im2 = Image.open(f)
|
||||||
assert_equal(im2.info.get("icc_profile"), icc_profile)
|
assert_equal(im2.info.get("icc_profile"), icc_profile)
|
||||||
# Roundtrip via memory buffer.
|
# Roundtrip via memory buffer.
|
||||||
im1 = roundtrip(lena())
|
im1 = roundtrip(lena())
|
||||||
|
@ -203,3 +201,9 @@ def test_exif():
|
||||||
im = Image.open("Tests/images/pil_sample_rgb.jpg")
|
im = Image.open("Tests/images/pil_sample_rgb.jpg")
|
||||||
info = im._getexif()
|
info = im._getexif()
|
||||||
assert_equal(info[305], 'Adobe Photoshop CS Macintosh')
|
assert_equal(info[305], 'Adobe Photoshop CS Macintosh')
|
||||||
|
|
||||||
|
|
||||||
|
def test_quality_keep():
|
||||||
|
im = Image.open("Images/lena.jpg")
|
||||||
|
f = tempfile('temp.jpg')
|
||||||
|
assert_no_exception(lambda: im.save(f, quality='keep'))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user