mirror of
https://github.com/python-pillow/Pillow.git
synced 2024-12-26 09:56:17 +03:00
commit
436daee5e0
|
@ -134,9 +134,13 @@ class BmpImageFile(ImageFile.ImageFile):
|
|||
24: [(0xff0000, 0xff00, 0xff)],
|
||||
16: [(0xf800, 0x7e0, 0x1f), (0x7c00, 0x3e0, 0x1f)]}
|
||||
MASK_MODES = {
|
||||
(32, (0xff0000, 0xff00, 0xff, 0x0)): "BGRX", (32, (0xff0000, 0xff00, 0xff, 0xff000000)): "BGRA", (32, (0x0, 0x0, 0x0, 0x0)): "BGRA",
|
||||
(24, (0xff0000, 0xff00, 0xff)): "BGR",
|
||||
(16, (0xf800, 0x7e0, 0x1f)): "BGR;16", (16, (0x7c00, 0x3e0, 0x1f)): "BGR;15"}
|
||||
(32, (0xff0000, 0xff00, 0xff, 0x0)): "BGRX",
|
||||
(32, (0xff0000, 0xff00, 0xff, 0xff000000)): "BGRA",
|
||||
(32, (0x0, 0x0, 0x0, 0x0)): "BGRA",
|
||||
(24, (0xff0000, 0xff00, 0xff)): "BGR",
|
||||
(16, (0xf800, 0x7e0, 0x1f)): "BGR;16",
|
||||
(16, (0x7c00, 0x3e0, 0x1f)): "BGR;15"
|
||||
}
|
||||
if file_info['bits'] in SUPPORTED:
|
||||
if file_info['bits'] == 32 and file_info['rgba_mask'] in SUPPORTED[file_info['bits']]:
|
||||
raw_mode = MASK_MODES[(file_info['bits'], file_info['rgba_mask'])]
|
||||
|
|
|
@ -295,7 +295,7 @@ class EpsImageFile(ImageFile.ImageFile):
|
|||
break
|
||||
try:
|
||||
self.mode = self.mode_map[int(mo)]
|
||||
except:
|
||||
except ValueError:
|
||||
break
|
||||
|
||||
self.size = int(x), int(y)
|
||||
|
|
|
@ -397,10 +397,8 @@ def _save(im, fp, filename, save_all=False):
|
|||
|
||||
fp.write(b";") # end of file
|
||||
|
||||
try:
|
||||
if hasattr(fp, "flush"):
|
||||
fp.flush()
|
||||
except:
|
||||
pass
|
||||
|
||||
|
||||
def get_interlace(im):
|
||||
|
|
|
@ -650,9 +650,9 @@ class Image(object):
|
|||
def tobytes(self, encoder_name="raw", *args):
|
||||
"""
|
||||
Return image as a bytes object.
|
||||
|
||||
|
||||
.. warning::
|
||||
|
||||
|
||||
This method returns the raw image data from the internal
|
||||
storage. For compressed image data (e.g. PNG, JPEG) use
|
||||
:meth:`~.save`, with a BytesIO parameter for in-memory
|
||||
|
@ -2278,7 +2278,7 @@ def open(fp, mode="r"):
|
|||
except (SyntaxError, IndexError, TypeError, struct.error):
|
||||
# Leave disabled by default, spams the logs with image
|
||||
# opening failures that are entirely expected.
|
||||
#logger.debug("", exc_info=True)
|
||||
# logger.debug("", exc_info=True)
|
||||
continue
|
||||
return None
|
||||
|
||||
|
|
|
@ -42,6 +42,7 @@ from PIL._util import isStringType
|
|||
# Application code should use the <b>Draw</b> factory, instead of
|
||||
# directly.
|
||||
|
||||
|
||||
class ImageDraw(object):
|
||||
|
||||
##
|
||||
|
@ -297,7 +298,6 @@ class ImageDraw(object):
|
|||
|
||||
def multiline_textsize(self, text, font=None, spacing=0):
|
||||
max_width = 0
|
||||
height = 0
|
||||
lines = self._multiline_split(text)
|
||||
line_spacing = self.textsize('A', font=font)[1] + spacing
|
||||
for line in lines:
|
||||
|
|
|
@ -85,6 +85,7 @@ def fromqpixmap(im):
|
|||
# bytes_io.seek(0)
|
||||
# return Image.open(bytes_io)
|
||||
|
||||
|
||||
def align8to32(bytes, width, mode):
|
||||
"""
|
||||
converts each scanline of data from 8 bit to 32 bit aligned
|
||||
|
@ -113,6 +114,7 @@ def align8to32(bytes, width, mode):
|
|||
|
||||
return b''.join(new_data)
|
||||
|
||||
|
||||
def _toqclass_helper(im):
|
||||
data = None
|
||||
colortable = None
|
||||
|
|
|
@ -719,7 +719,6 @@ def jpeg_factory(fp=None, filename=None):
|
|||
except SyntaxError:
|
||||
warnings.warn("Image appears to be a malformed MPO file, it will be "
|
||||
"interpreted as a base JPEG file")
|
||||
pass
|
||||
return im
|
||||
|
||||
|
||||
|
|
|
@ -56,7 +56,7 @@ class PyAccess(object):
|
|||
|
||||
# Debugging is polluting test traces, only useful here
|
||||
# when hacking on PyAccess
|
||||
#logger.debug("%s", vals)
|
||||
# logger.debug("%s", vals)
|
||||
self._post_init()
|
||||
|
||||
def _post_init(self):
|
||||
|
|
|
@ -64,7 +64,7 @@ for o, a in opt:
|
|||
printerArgs = ["lpr"]
|
||||
elif o == "-P":
|
||||
# printer channel
|
||||
printerArgs = ["lpr","-P%s" % a]
|
||||
printerArgs = ["lpr", "-P%s" % a]
|
||||
|
||||
for filepath in argv:
|
||||
try:
|
||||
|
|
|
@ -13,7 +13,7 @@ from helper import unittest, PillowTestCase
|
|||
from PIL import Image
|
||||
try:
|
||||
import numpy as np
|
||||
except:
|
||||
except ImportError:
|
||||
raise unittest.SkipTest("numpy not installed")
|
||||
|
||||
YDIM = 32769
|
||||
|
|
|
@ -82,7 +82,7 @@ class TestImageSpider(PillowTestCase):
|
|||
|
||||
def test_invalid_file(self):
|
||||
invalid_file = "Tests/images/invalid.spider"
|
||||
|
||||
|
||||
self.assertRaises(IOError, lambda: Image.open(invalid_file))
|
||||
|
||||
|
||||
|
|
|
@ -80,11 +80,11 @@ class TestFileTiff(PillowTestCase):
|
|||
filename = "Tests/images/pil168.tif"
|
||||
im = Image.open(filename)
|
||||
|
||||
#legacy api
|
||||
# legacy api
|
||||
self.assert_(isinstance(im.tag[X_RESOLUTION][0], tuple))
|
||||
self.assert_(isinstance(im.tag[Y_RESOLUTION][0], tuple))
|
||||
|
||||
#v2 api
|
||||
# v2 api
|
||||
self.assert_(isinstance(im.tag_v2[X_RESOLUTION], float))
|
||||
self.assert_(isinstance(im.tag_v2[Y_RESOLUTION], float))
|
||||
|
||||
|
@ -249,7 +249,7 @@ class TestFileTiff(PillowTestCase):
|
|||
{256: 55, 257: 43, 258: (8, 8, 8, 8), 259: 1,
|
||||
262: 2, 296: 2, 273: (8,), 338: (1,), 277: 4,
|
||||
279: (9460,), 282: 72.0, 283: 72.0, 284: 1})
|
||||
|
||||
|
||||
# legacy interface
|
||||
self.assertEqual(
|
||||
im.tag.as_dict(),
|
||||
|
|
|
@ -28,7 +28,7 @@ class TestFileTiffMetadata(PillowTestCase):
|
|||
#
|
||||
# For text items, we still have to decode('ascii','replace') because
|
||||
# the tiff file format can't take 8 bit bytes in that field.
|
||||
|
||||
|
||||
basetextdata = "This is some arbitrary metadata for a text field"
|
||||
bindata = basetextdata.encode('ascii') + b" \xff"
|
||||
textdata = basetextdata + " " + chr(255)
|
||||
|
@ -40,7 +40,7 @@ class TestFileTiffMetadata(PillowTestCase):
|
|||
ImageJMetaData = tag_ids['ImageJMetaData']
|
||||
ImageJMetaDataByteCounts = tag_ids['ImageJMetaDataByteCounts']
|
||||
ImageDescription = tag_ids['ImageDescription']
|
||||
|
||||
|
||||
info[ImageJMetaDataByteCounts] = len(bindata)
|
||||
info[ImageJMetaData] = bindata
|
||||
info[tag_ids['RollAngle']] = floatdata
|
||||
|
@ -49,7 +49,7 @@ class TestFileTiffMetadata(PillowTestCase):
|
|||
info.tagtype[tag_ids['YawAngle']] = 12
|
||||
|
||||
info[ImageDescription] = textdata
|
||||
|
||||
|
||||
f = self.tempfile("temp.tif")
|
||||
|
||||
img.save(f, tiffinfo=info)
|
||||
|
@ -70,7 +70,6 @@ class TestFileTiffMetadata(PillowTestCase):
|
|||
loaded_double = loaded.tag[tag_ids['YawAngle']][0]
|
||||
self.assertAlmostEqual(loaded_double, doubledata)
|
||||
|
||||
|
||||
def test_read_metadata(self):
|
||||
img = Image.open('Tests/images/hopper_g4.tif')
|
||||
|
||||
|
@ -167,7 +166,6 @@ class TestFileTiffMetadata(PillowTestCase):
|
|||
self.assert_(im.info['icc_profile'])
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ class TestFromQImage(PillowQtTestCase, PillowTestCase):
|
|||
Image.open('Tests/images/transparent.png'),
|
||||
Image.open('Tests/images/7x13.png'),
|
||||
]
|
||||
|
||||
|
||||
def roundtrip(self, expected):
|
||||
# PIL -> Qt
|
||||
intermediate = expected.toqimage()
|
||||
|
|
|
@ -24,13 +24,13 @@ class TestImageOpsUsm(PillowTestCase):
|
|||
|
||||
def test_filter_api(self):
|
||||
|
||||
filter = ImageFilter.GaussianBlur(2.0)
|
||||
i = im.filter(filter)
|
||||
test_filter = ImageFilter.GaussianBlur(2.0)
|
||||
i = im.filter(test_filter)
|
||||
self.assertEqual(i.mode, "RGB")
|
||||
self.assertEqual(i.size, (128, 128))
|
||||
|
||||
filter = ImageFilter.UnsharpMask(2.0, 125, 8)
|
||||
i = im.filter(filter)
|
||||
test_filter = ImageFilter.UnsharpMask(2.0, 125, 8)
|
||||
i = im.filter(test_filter)
|
||||
self.assertEqual(i.mode, "RGB")
|
||||
self.assertEqual(i.size, (128, 128))
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ from io import BytesIO
|
|||
|
||||
if sys.platform.startswith('win32'):
|
||||
import ctypes.wintypes
|
||||
|
||||
|
||||
class BITMAPFILEHEADER(ctypes.Structure):
|
||||
_pack_ = 2
|
||||
_fields_ = [
|
||||
|
@ -40,27 +40,26 @@ if sys.platform.startswith('win32'):
|
|||
DIB_RGB_COLORS = 0
|
||||
|
||||
memcpy = ctypes.cdll.msvcrt.memcpy
|
||||
memcpy.argtypes = [ ctypes.c_void_p, ctypes.c_void_p, ctypes.c_size_t ]
|
||||
memcpy.argtypes = [ctypes.c_void_p, ctypes.c_void_p, ctypes.c_size_t]
|
||||
|
||||
CreateCompatibleDC = ctypes.windll.gdi32.CreateCompatibleDC
|
||||
CreateCompatibleDC.argtypes = [ ctypes.wintypes.HDC ]
|
||||
CreateCompatibleDC.argtypes = [ctypes.wintypes.HDC]
|
||||
CreateCompatibleDC.restype = ctypes.wintypes.HDC
|
||||
|
||||
DeleteDC = ctypes.windll.gdi32.DeleteDC
|
||||
DeleteDC.argtypes = [ ctypes.wintypes.HDC ]
|
||||
DeleteDC.argtypes = [ctypes.wintypes.HDC]
|
||||
|
||||
SelectObject = ctypes.windll.gdi32.SelectObject
|
||||
SelectObject.argtypes = [ ctypes.wintypes.HDC, ctypes.wintypes.HGDIOBJ ]
|
||||
SelectObject.argtypes = [ctypes.wintypes.HDC, ctypes.wintypes.HGDIOBJ]
|
||||
SelectObject.restype = ctypes.wintypes.HGDIOBJ
|
||||
|
||||
DeleteObject = ctypes.windll.gdi32.DeleteObject
|
||||
DeleteObject.argtypes = [ ctypes.wintypes.HGDIOBJ ]
|
||||
DeleteObject.argtypes = [ctypes.wintypes.HGDIOBJ]
|
||||
|
||||
CreateDIBSection = ctypes.windll.gdi32.CreateDIBSection
|
||||
CreateDIBSection.argtypes = [ ctypes.wintypes.HDC, ctypes.c_void_p, ctypes.c_uint, ctypes.POINTER(ctypes.c_void_p), ctypes.wintypes.HANDLE, ctypes.wintypes.DWORD ]
|
||||
CreateDIBSection.argtypes = [ctypes.wintypes.HDC, ctypes.c_void_p, ctypes.c_uint, ctypes.POINTER(ctypes.c_void_p), ctypes.wintypes.HANDLE, ctypes.wintypes.DWORD]
|
||||
CreateDIBSection.restype = ctypes.wintypes.HBITMAP
|
||||
|
||||
|
||||
def serialize_dib(bi, pixels):
|
||||
bf = BITMAPFILEHEADER()
|
||||
bf.bfType = 0x4d42
|
||||
|
@ -78,7 +77,7 @@ if sys.platform.startswith('win32'):
|
|||
class TestImageWinPointers(PillowTestCase):
|
||||
def test_pointer(self):
|
||||
im = hopper()
|
||||
(width, height) =im.size
|
||||
(width, height) = im.size
|
||||
opath = self.tempfile('temp.png')
|
||||
imdib = ImageWin.Dib(im)
|
||||
|
||||
|
@ -94,7 +93,7 @@ if sys.platform.startswith('win32'):
|
|||
hdr.biClrImportant = 0
|
||||
|
||||
hdc = CreateCompatibleDC(None)
|
||||
#print('hdc:',hex(hdc))
|
||||
# print('hdc:',hex(hdc))
|
||||
pixels = ctypes.c_void_p()
|
||||
dib = CreateDIBSection(hdc, ctypes.byref(hdr), DIB_RGB_COLORS, ctypes.byref(pixels), None, 0)
|
||||
SelectObject(hdc, dib)
|
||||
|
@ -108,4 +107,3 @@ if sys.platform.startswith('win32'):
|
|||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
||||
|
|
|
@ -22,9 +22,9 @@ class TestNumpy(PillowTestCase):
|
|||
|
||||
def test_numpy_to_image(self):
|
||||
|
||||
def to_image(dtype, bands=1, bool=0):
|
||||
def to_image(dtype, bands=1, boolean=0):
|
||||
if bands == 1:
|
||||
if bool:
|
||||
if boolean:
|
||||
data = [0, 1] * 50
|
||||
else:
|
||||
data = list(range(100))
|
||||
|
@ -43,8 +43,8 @@ class TestNumpy(PillowTestCase):
|
|||
# print dtype, list(i.getdata())
|
||||
return i
|
||||
|
||||
# self.assert_image(to_image(numpy.bool, bool=1), "1", (10, 10))
|
||||
# self.assert_image(to_image(numpy.bool8, bool=1), "1", (10, 10))
|
||||
# self.assert_image(to_image(numpy.bool, boolean=1), "1", (10, 10))
|
||||
# self.assert_image(to_image(numpy.bool8, boolean=1), "1", (10, 10))
|
||||
|
||||
self.assertRaises(TypeError, lambda: to_image(numpy.uint))
|
||||
self.assert_image(to_image(numpy.uint8), "L", (10, 10))
|
||||
|
|
|
@ -52,10 +52,10 @@ class TestOleFileIo(PillowTestCase):
|
|||
ole = OleFileIO.OleFileIO(ole_file)
|
||||
|
||||
# Act
|
||||
type = ole.get_type('worddocument')
|
||||
entry_type = ole.get_type('worddocument')
|
||||
|
||||
# Assert
|
||||
self.assertEqual(type, OleFileIO.STGTY_STREAM)
|
||||
self.assertEqual(entry_type, OleFileIO.STGTY_STREAM)
|
||||
ole.close()
|
||||
|
||||
def test_get_size(self):
|
||||
|
|
|
@ -22,8 +22,8 @@ class TestPickle(PillowTestCase):
|
|||
self.assertEqual(im, loaded_im)
|
||||
|
||||
def helper_pickle_string(self, pickle, protocol=0,
|
||||
file='Tests/images/hopper.jpg', mode=None):
|
||||
im = Image.open(file)
|
||||
test_file='Tests/images/hopper.jpg', mode=None):
|
||||
im = Image.open(test_file)
|
||||
if mode:
|
||||
im = im.convert(mode)
|
||||
|
||||
|
@ -69,7 +69,7 @@ class TestPickle(PillowTestCase):
|
|||
"Tests/images/p_trns_single.png",
|
||||
"Tests/images/pil123p.png"
|
||||
]:
|
||||
self.helper_pickle_string(pickle, file=test_file)
|
||||
self.helper_pickle_string(pickle, test_file=test_file)
|
||||
|
||||
def test_pickle_l_mode(self):
|
||||
# Arrange
|
||||
|
|
Loading…
Reference in New Issue
Block a user