mirror of
				https://github.com/python-pillow/Pillow.git
				synced 2025-11-04 01:47:47 +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