mirror of
https://github.com/python-pillow/Pillow.git
synced 2024-12-26 18:06:18 +03:00
Changed Image size property to be read-only by default
This commit is contained in:
parent
34426f2558
commit
0adeb82e98
|
@ -56,9 +56,8 @@ class TestImage(PillowTestCase):
|
|||
self.assertEqual(im.width, 1)
|
||||
self.assertEqual(im.height, 2)
|
||||
|
||||
im.size = (3, 4)
|
||||
self.assertEqual(im.width, 3)
|
||||
self.assertEqual(im.height, 4)
|
||||
with self.assertRaises(AttributeError) as e:
|
||||
im.size = (3, 4)
|
||||
|
||||
def test_invalid_image(self):
|
||||
if py3:
|
||||
|
|
|
@ -154,7 +154,7 @@ class MockImageFile(ImageFile.ImageFile):
|
|||
def _open(self):
|
||||
self.rawmode = 'RGBA'
|
||||
self.mode = 'RGBA'
|
||||
self.size = (200, 200)
|
||||
self._size = (200, 200)
|
||||
self.tile = [("MOCK", (xoff, yoff, xoff+xsize, yoff+ysize), 32, None)]
|
||||
|
||||
|
||||
|
|
|
@ -270,7 +270,7 @@ class BlpImageFile(ImageFile.ImageFile):
|
|||
self._blp_alpha_encoding, = struct.unpack("<b", self.fp.read(1))
|
||||
self._blp_mips, = struct.unpack("<b", self.fp.read(1))
|
||||
|
||||
self.size = struct.unpack("<II", self.fp.read(8))
|
||||
self._size = struct.unpack("<II", self.fp.read(8))
|
||||
|
||||
if self.magic == b"BLP1":
|
||||
# Only present for BLP1
|
||||
|
|
|
@ -143,7 +143,7 @@ class BmpImageFile(ImageFile.ImageFile):
|
|||
file_info['header_size'])
|
||||
# ------------------ Special case : header is reported 40, which
|
||||
# ---------------------- is shorter than real size for bpp >= 16
|
||||
self.size = file_info['width'], file_info['height']
|
||||
self._size = file_info['width'], file_info['height']
|
||||
# -------- If color count was not found in the header, compute from bits
|
||||
file_info['colors'] = file_info['colors'] if file_info.get('colors', 0) else (1 << file_info['bits'])
|
||||
# -------------------------------- Check abnormal values for DOS attacks
|
||||
|
|
|
@ -47,7 +47,7 @@ class BufrStubImageFile(ImageFile.StubImageFile):
|
|||
|
||||
# make something up
|
||||
self.mode = "F"
|
||||
self.size = 1, 1
|
||||
self._size = 1, 1
|
||||
|
||||
loader = self._load()
|
||||
if loader:
|
||||
|
|
|
@ -63,7 +63,7 @@ class CurImageFile(BmpImagePlugin.BmpImageFile):
|
|||
self._bitmap(i32(m[12:]) + offset)
|
||||
|
||||
# patch up the bitmap height
|
||||
self.size = self.size[0], self.size[1]//2
|
||||
self._size = self.size[0], self.size[1]//2
|
||||
d, e, o, a = self.tile[0]
|
||||
self.tile[0] = d, (0, 0)+self.size, o, a
|
||||
|
||||
|
|
|
@ -114,7 +114,7 @@ class DdsImageFile(ImageFile.ImageFile):
|
|||
header = BytesIO(header_bytes)
|
||||
|
||||
flags, height, width = struct.unpack("<3I", header.read(12))
|
||||
self.size = (width, height)
|
||||
self._size = (width, height)
|
||||
self.mode = "RGBA"
|
||||
|
||||
pitch, depth, mipmaps = struct.unpack("<3I", header.read(12))
|
||||
|
|
|
@ -217,7 +217,7 @@ class EpsImageFile(ImageFile.ImageFile):
|
|||
box = None
|
||||
|
||||
self.mode = "RGB"
|
||||
self.size = 1, 1 # FIXME: huh?
|
||||
self._size = 1, 1 # FIXME: huh?
|
||||
|
||||
#
|
||||
# Load EPS header
|
||||
|
@ -244,7 +244,7 @@ class EpsImageFile(ImageFile.ImageFile):
|
|||
# fields should be integers, but some drivers
|
||||
# put floating point values there anyway.
|
||||
box = [int(float(i)) for i in v.split()]
|
||||
self.size = box[2] - box[0], box[3] - box[1]
|
||||
self._size = box[2] - box[0], box[3] - box[1]
|
||||
self.tile = [("eps", (0, 0) + self.size, offset,
|
||||
(length, box))]
|
||||
except Exception:
|
||||
|
@ -293,7 +293,7 @@ class EpsImageFile(ImageFile.ImageFile):
|
|||
except ValueError:
|
||||
break
|
||||
|
||||
self.size = int(x), int(y)
|
||||
self._size = int(x), int(y)
|
||||
return
|
||||
|
||||
s = fp.readline().strip('\r\n')
|
||||
|
@ -331,7 +331,7 @@ class EpsImageFile(ImageFile.ImageFile):
|
|||
return
|
||||
self.im = Ghostscript(self.tile, self.size, self.fp, scale)
|
||||
self.mode = self.im.mode
|
||||
self.size = self.im.size
|
||||
self._size = self.im.size
|
||||
self.tile = []
|
||||
|
||||
def load_seek(self, *args, **kwargs):
|
||||
|
|
|
@ -50,7 +50,7 @@ class FITSStubImageFile(ImageFile.StubImageFile):
|
|||
|
||||
# make something up
|
||||
self.mode = "F"
|
||||
self.size = 1, 1
|
||||
self._size = 1, 1
|
||||
|
||||
loader = self._load()
|
||||
if loader:
|
||||
|
|
|
@ -54,7 +54,7 @@ class FliImageFile(ImageFile.ImageFile):
|
|||
|
||||
# image characteristics
|
||||
self.mode = "P"
|
||||
self.size = i16(s[8:10]), i16(s[10:12])
|
||||
self._size = i16(s[8:10]), i16(s[10:12])
|
||||
|
||||
# animation speed
|
||||
duration = i32(s[16:20])
|
||||
|
|
|
@ -81,7 +81,7 @@ class FpxImageFile(ImageFile.ImageFile):
|
|||
|
||||
# size (highest resolution)
|
||||
|
||||
self.size = prop[0x1000002], prop[0x1000003]
|
||||
self._size = prop[0x1000002], prop[0x1000003]
|
||||
|
||||
size = max(self.size)
|
||||
i = 1
|
||||
|
|
|
@ -61,7 +61,7 @@ class FtexImageFile(ImageFile.ImageFile):
|
|||
def _open(self):
|
||||
magic = struct.unpack("<I", self.fp.read(4))
|
||||
version = struct.unpack("<i", self.fp.read(4))
|
||||
self.size = struct.unpack("<2i", self.fp.read(8))
|
||||
self._size = struct.unpack("<2i", self.fp.read(8))
|
||||
mipmap_count, format_count = struct.unpack("<2i", self.fp.read(8))
|
||||
|
||||
self.mode = "RGB"
|
||||
|
|
|
@ -74,7 +74,7 @@ class GbrImageFile(ImageFile.ImageFile):
|
|||
else:
|
||||
self.mode = 'RGBA'
|
||||
|
||||
self.size = width, height
|
||||
self._size = width, height
|
||||
|
||||
self.info["comment"] = comment
|
||||
|
||||
|
|
|
@ -49,7 +49,7 @@ class GdImageFile(ImageFile.ImageFile):
|
|||
raise SyntaxError("Not a valid GD 2.x .gd file")
|
||||
|
||||
self.mode = "L" # FIXME: "P"
|
||||
self.size = i16(s[2:4]), i16(s[4:6])
|
||||
self._size = i16(s[2:4]), i16(s[4:6])
|
||||
|
||||
trueColor = i8(s[6])
|
||||
trueColorOffset = 2 if trueColor else 0
|
||||
|
|
|
@ -65,7 +65,7 @@ class GifImageFile(ImageFile.ImageFile):
|
|||
raise SyntaxError("not a GIF file")
|
||||
|
||||
self.info["version"] = s[:6]
|
||||
self.size = i16(s[6:]), i16(s[8:])
|
||||
self._size = i16(s[6:]), i16(s[8:])
|
||||
self.tile = []
|
||||
flags = i8(s[10])
|
||||
bits = (flags & 7) + 1
|
||||
|
|
|
@ -48,7 +48,7 @@ class GribStubImageFile(ImageFile.StubImageFile):
|
|||
|
||||
# make something up
|
||||
self.mode = "F"
|
||||
self.size = 1, 1
|
||||
self._size = 1, 1
|
||||
|
||||
loader = self._load()
|
||||
if loader:
|
||||
|
|
|
@ -47,7 +47,7 @@ class HDF5StubImageFile(ImageFile.StubImageFile):
|
|||
|
||||
# make something up
|
||||
self.mode = "F"
|
||||
self.size = 1, 1
|
||||
self._size = 1, 1
|
||||
|
||||
loader = self._load()
|
||||
if loader:
|
||||
|
|
|
@ -265,13 +265,33 @@ class IcnsImageFile(ImageFile.ImageFile):
|
|||
def _open(self):
|
||||
self.icns = IcnsFile(self.fp)
|
||||
self.mode = 'RGBA'
|
||||
self.info['sizes'] = self.icns.itersizes()
|
||||
self.best_size = self.icns.bestsize()
|
||||
self.size = (self.best_size[0] * self.best_size[2],
|
||||
self.best_size[1] * self.best_size[2])
|
||||
self.info['sizes'] = self.icns.itersizes()
|
||||
# Just use this to see if it's loaded or not yet.
|
||||
self.tile = ('',)
|
||||
|
||||
@property
|
||||
def size(self):
|
||||
return self._size
|
||||
|
||||
@size.setter
|
||||
def size(self, value):
|
||||
info_size = value
|
||||
if info_size not in self.info['sizes'] and len(info_size) == 2:
|
||||
info_size = (info_size[0], info_size[1], 1)
|
||||
if info_size not in self.info['sizes'] and len(info_size) == 3 and \
|
||||
info_size[2] == 1:
|
||||
simple_sizes = [(size[0] * size[2], size[1] * size[2])
|
||||
for size in self.info['sizes']]
|
||||
if value in simple_sizes:
|
||||
info_size = self.info['sizes'][simple_sizes.index(value)]
|
||||
if info_size not in self.info['sizes']:
|
||||
raise ValueError(
|
||||
"This is not one of the allowed sizes of this image")
|
||||
self._size = value
|
||||
|
||||
def load(self):
|
||||
if len(self.size) == 3:
|
||||
self.best_size = self.size
|
||||
|
|
|
@ -169,7 +169,7 @@ class IcoFile(object):
|
|||
im = BmpImagePlugin.DibImageFile(self.buf)
|
||||
|
||||
# change tile dimension to only encompass XOR image
|
||||
im.size = (im.size[0], int(im.size[1] / 2))
|
||||
im._size = (im.size[0], int(im.size[1] / 2))
|
||||
d, e, o, a = im.tile[0]
|
||||
im.tile[0] = d, (0, 0) + im.size, o, a
|
||||
|
||||
|
@ -263,6 +263,17 @@ class IcoImageFile(ImageFile.ImageFile):
|
|||
self.size = self.ico.entry[0]['dim']
|
||||
self.load()
|
||||
|
||||
@property
|
||||
def size(self):
|
||||
return self._size
|
||||
|
||||
@size.setter
|
||||
def size(self, value):
|
||||
if value not in self.info['sizes']:
|
||||
raise ValueError(
|
||||
"This is not one of the allowed sizes of this image")
|
||||
self._size = value
|
||||
|
||||
def load(self):
|
||||
im = self.ico.getimage(self.size)
|
||||
# if tile is PNG, it won't really be loaded yet
|
||||
|
|
|
@ -196,7 +196,7 @@ class ImImageFile(ImageFile.ImageFile):
|
|||
raise SyntaxError("Not an IM file")
|
||||
|
||||
# Basic attributes
|
||||
self.size = self.info[SIZE]
|
||||
self._size = self.info[SIZE]
|
||||
self.mode = self.info[MODE]
|
||||
|
||||
# Skip forward to start of image data
|
||||
|
|
|
@ -531,7 +531,7 @@ class Image(object):
|
|||
# FIXME: turn mode and size into delegating properties?
|
||||
self.im = None
|
||||
self.mode = ""
|
||||
self.size = (0, 0)
|
||||
self._size = (0, 0)
|
||||
self.palette = None
|
||||
self.info = {}
|
||||
self.category = NORMAL
|
||||
|
@ -546,11 +546,15 @@ class Image(object):
|
|||
def height(self):
|
||||
return self.size[1]
|
||||
|
||||
@property
|
||||
def size(self):
|
||||
return self._size
|
||||
|
||||
def _new(self, im):
|
||||
new = Image()
|
||||
new.im = im
|
||||
new.mode = im.mode
|
||||
new.size = im.size
|
||||
new._size = im.size
|
||||
if im.mode in ('P', 'PA'):
|
||||
if self.palette:
|
||||
new.palette = self.palette.copy()
|
||||
|
@ -698,7 +702,7 @@ class Image(object):
|
|||
info, mode, size, palette, data = state
|
||||
self.info = info
|
||||
self.mode = mode
|
||||
self.size = size
|
||||
self._size = size
|
||||
self.im = core.new(mode, size)
|
||||
if mode in ("L", "P") and palette:
|
||||
self.putpalette(palette)
|
||||
|
@ -2104,7 +2108,7 @@ class Image(object):
|
|||
|
||||
self.im = im.im
|
||||
self.mode = im.mode
|
||||
self.size = size
|
||||
self._size = size
|
||||
|
||||
self.readonly = 0
|
||||
self.pyaccess = None
|
||||
|
|
|
@ -78,10 +78,10 @@ class ImtImageFile(ImageFile.ImageFile):
|
|||
k, v = m.group(1, 2)
|
||||
if k == "width":
|
||||
xsize = int(v)
|
||||
self.size = xsize, ysize
|
||||
self._size = xsize, ysize
|
||||
elif k == "height":
|
||||
ysize = int(v)
|
||||
self.size = xsize, ysize
|
||||
self._size = xsize, ysize
|
||||
elif k == "pixel" and v == "n8":
|
||||
self.mode = "L"
|
||||
|
||||
|
|
|
@ -118,7 +118,7 @@ class IptcImageFile(ImageFile.ImageFile):
|
|||
self.mode = "CMYK"[id]
|
||||
|
||||
# size
|
||||
self.size = self.getint((3, 20)), self.getint((3, 30))
|
||||
self._size = self.getint((3, 20)), self.getint((3, 30))
|
||||
|
||||
# compression
|
||||
try:
|
||||
|
|
|
@ -159,13 +159,13 @@ class Jpeg2KImageFile(ImageFile.ImageFile):
|
|||
sig = self.fp.read(4)
|
||||
if sig == b'\xff\x4f\xff\x51':
|
||||
self.codec = "j2k"
|
||||
self.size, self.mode = _parse_codestream(self.fp)
|
||||
self._size, self.mode = _parse_codestream(self.fp)
|
||||
else:
|
||||
sig = sig + self.fp.read(8)
|
||||
|
||||
if sig == b'\x00\x00\x00\x0cjP \x0d\x0a\x87\x0a':
|
||||
self.codec = "jp2"
|
||||
self.size, self.mode = _parse_jp2_header(self.fp)
|
||||
self._size, self.mode = _parse_jp2_header(self.fp)
|
||||
else:
|
||||
raise SyntaxError('not a JPEG 2000 file')
|
||||
|
||||
|
@ -198,8 +198,8 @@ class Jpeg2KImageFile(ImageFile.ImageFile):
|
|||
if self.reduce:
|
||||
power = 1 << self.reduce
|
||||
adjust = power >> 1
|
||||
self.size = (int((self.size[0] + adjust) / power),
|
||||
int((self.size[1] + adjust) / power))
|
||||
self._size = (int((self.size[0] + adjust) / power),
|
||||
int((self.size[1] + adjust) / power))
|
||||
|
||||
if self.tile:
|
||||
# Update the reduce and layers settings
|
||||
|
|
|
@ -159,7 +159,7 @@ def SOF(self, marker):
|
|||
|
||||
n = i16(self.fp.read(2))-2
|
||||
s = ImageFile._safe_read(self.fp, n)
|
||||
self.size = i16(s[3:]), i16(s[1:])
|
||||
self._size = i16(s[3:]), i16(s[1:])
|
||||
|
||||
self.bits = i8(s[0])
|
||||
if self.bits != 8:
|
||||
|
@ -390,7 +390,7 @@ class JpegImageFile(ImageFile.ImageFile):
|
|||
if scale >= s:
|
||||
break
|
||||
e = e[0], e[1], (e[2]-e[0]+s-1)//s+e[0], (e[3]-e[1]+s-1)//s+e[1]
|
||||
self.size = ((self.size[0]+s-1)//s, (self.size[1]+s-1)//s)
|
||||
self._size = ((self.size[0]+s-1)//s, (self.size[1]+s-1)//s)
|
||||
scale = s
|
||||
|
||||
self.tile = [(d, e, o, a)]
|
||||
|
@ -423,7 +423,7 @@ class JpegImageFile(ImageFile.ImageFile):
|
|||
pass
|
||||
|
||||
self.mode = self.im.mode
|
||||
self.size = self.im.size
|
||||
self._size = self.im.size
|
||||
|
||||
self.tile = []
|
||||
|
||||
|
|
|
@ -59,7 +59,7 @@ class McIdasImageFile(ImageFile.ImageFile):
|
|||
raise SyntaxError("unsupported McIdas format")
|
||||
|
||||
self.mode = mode
|
||||
self.size = w[10], w[9]
|
||||
self._size = w[10], w[9]
|
||||
|
||||
offset = w[34] + w[15]
|
||||
stride = w[15] + w[10]*w[11]*w[14]
|
||||
|
|
|
@ -72,7 +72,7 @@ class MpegImageFile(ImageFile.ImageFile):
|
|||
raise SyntaxError("not an MPEG file")
|
||||
|
||||
self.mode = "RGB"
|
||||
self.size = s.read(12), s.read(12)
|
||||
self._size = s.read(12), s.read(12)
|
||||
|
||||
|
||||
# --------------------------------------------------------------------
|
||||
|
|
|
@ -63,7 +63,7 @@ class MspImageFile(ImageFile.ImageFile):
|
|||
raise SyntaxError("bad MSP checksum")
|
||||
|
||||
self.mode = "1"
|
||||
self.size = i16(s[4:]), i16(s[6:])
|
||||
self._size = i16(s[4:]), i16(s[6:])
|
||||
|
||||
if s[:4] == b"DanM":
|
||||
self.tile = [("raw", (0, 0)+self.size, 32, ("1", 0, 1))]
|
||||
|
|
|
@ -48,14 +48,14 @@ class PcdImageFile(ImageFile.ImageFile):
|
|||
self.tile_post_rotate = -90
|
||||
|
||||
self.mode = "RGB"
|
||||
self.size = 768, 512 # FIXME: not correct for rotated images!
|
||||
self._size = 768, 512 # FIXME: not correct for rotated images!
|
||||
self.tile = [("pcd", (0, 0)+self.size, 96*2048, None)]
|
||||
|
||||
def load_end(self):
|
||||
if self.tile_post_rotate:
|
||||
# Handle rotated PCDs
|
||||
self.im = self.im.rotate(self.tile_post_rotate)
|
||||
self.size = self.im.size
|
||||
self._size = self.im.size
|
||||
|
||||
|
||||
#
|
||||
|
|
|
@ -100,7 +100,7 @@ class PcxImageFile(ImageFile.ImageFile):
|
|||
raise IOError("unknown PCX mode")
|
||||
|
||||
self.mode = mode
|
||||
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
|
||||
logger.debug("size: %sx%s", *self.size)
|
||||
|
|
|
@ -50,7 +50,7 @@ class PixarImageFile(ImageFile.ImageFile):
|
|||
# read rest of header
|
||||
s = s + self.fp.read(508)
|
||||
|
||||
self.size = i16(s[418:420]), i16(s[416:418])
|
||||
self._size = i16(s[418:420]), i16(s[416:418])
|
||||
|
||||
# get channel/depth descriptions
|
||||
mode = i16(s[424:426]), i16(s[426:428])
|
||||
|
|
|
@ -577,7 +577,7 @@ class PngImageFile(ImageFile.ImageFile):
|
|||
# (believe me, I've tried ;-)
|
||||
|
||||
self.mode = self.png.im_mode
|
||||
self.size = self.png.im_size
|
||||
self._size = self.png.im_size
|
||||
self.info = self.png.im_info
|
||||
self.text = self.png.im_text # experimental
|
||||
self.tile = self.png.im_tile
|
||||
|
|
|
@ -107,7 +107,7 @@ class PpmImageFile(ImageFile.ImageFile):
|
|||
self.mode = 'I'
|
||||
rawmode = 'I;32B'
|
||||
|
||||
self.size = xsize, ysize
|
||||
self._size = xsize, ysize
|
||||
self.tile = [("raw",
|
||||
(0, 0, xsize, ysize),
|
||||
self.fp.tell(),
|
||||
|
|
|
@ -71,7 +71,7 @@ class PsdImageFile(ImageFile.ImageFile):
|
|||
raise IOError("not enough channels")
|
||||
|
||||
self.mode = mode
|
||||
self.size = i32(s[18:]), i32(s[14:])
|
||||
self._size = i32(s[18:]), i32(s[14:])
|
||||
|
||||
#
|
||||
# color mode data
|
||||
|
|
|
@ -96,7 +96,7 @@ class SgiImageFile(ImageFile.ImageFile):
|
|||
if rawmode == "":
|
||||
raise ValueError("Unsupported SGI image mode")
|
||||
|
||||
self.size = xsize, ysize
|
||||
self._size = xsize, ysize
|
||||
self.mode = rawmode.split(";")[0]
|
||||
|
||||
# orientation -1 : scanlines begins at the bottom-left corner
|
||||
|
|
|
@ -120,7 +120,7 @@ class SpiderImageFile(ImageFile.ImageFile):
|
|||
if iform != 1:
|
||||
raise SyntaxError("not a Spider 2D image")
|
||||
|
||||
self.size = int(h[12]), int(h[2]) # size in pixels (width, height)
|
||||
self._size = int(h[12]), int(h[2]) # size in pixels (width, height)
|
||||
self.istack = int(h[24])
|
||||
self.imgnumber = int(h[27])
|
||||
|
||||
|
|
|
@ -59,7 +59,7 @@ class SunImageFile(ImageFile.ImageFile):
|
|||
|
||||
offset = 32
|
||||
|
||||
self.size = i32(s[4:8]), i32(s[8:12])
|
||||
self._size = i32(s[4:8]), i32(s[8:12])
|
||||
|
||||
depth = i32(s[12:16])
|
||||
# data_length = i32(s[16:20]) # unreliable, ignore.
|
||||
|
|
|
@ -64,7 +64,7 @@ class TgaImageFile(ImageFile.ImageFile):
|
|||
|
||||
flags = i8(s[17])
|
||||
|
||||
self.size = i16(s[12:]), i16(s[14:])
|
||||
self._size = i16(s[12:]), i16(s[14:])
|
||||
|
||||
# validate header fields
|
||||
if colormaptype not in (0, 1) or\
|
||||
|
|
|
@ -1174,7 +1174,7 @@ class TiffImageFile(ImageFile.ImageFile):
|
|||
# size
|
||||
xsize = self.tag_v2.get(IMAGEWIDTH)
|
||||
ysize = self.tag_v2.get(IMAGELENGTH)
|
||||
self.size = xsize, ysize
|
||||
self._size = xsize, ysize
|
||||
|
||||
if DEBUG:
|
||||
print("- size:", self.size)
|
||||
|
|
|
@ -42,7 +42,7 @@ class WebPImageFile(ImageFile.ImageFile):
|
|||
self.info["icc_profile"] = icc_profile
|
||||
if exif:
|
||||
self.info["exif"] = exif
|
||||
self.size = width, height
|
||||
self._size = width, height
|
||||
self.fp = BytesIO(data)
|
||||
self.tile = [("raw", (0, 0) + self.size, 0, self.mode)]
|
||||
self._n_frames = 1
|
||||
|
@ -55,7 +55,7 @@ class WebPImageFile(ImageFile.ImageFile):
|
|||
# Get info from decoder
|
||||
width, height, loop_count, bgcolor, frame_count, mode = \
|
||||
self._decoder.get_info()
|
||||
self.size = width, height
|
||||
self._size = width, height
|
||||
self.info["loop"] = loop_count
|
||||
bg_a, bg_r, bg_g, bg_b = \
|
||||
(bgcolor >> 24) & 0xFF, \
|
||||
|
|
|
@ -143,7 +143,7 @@ class WmfStubImageFile(ImageFile.StubImageFile):
|
|||
raise SyntaxError("Unsupported file format")
|
||||
|
||||
self.mode = "RGB"
|
||||
self.size = size
|
||||
self._size = size
|
||||
|
||||
loader = self._load()
|
||||
if loader:
|
||||
|
|
|
@ -65,7 +65,7 @@ class XVThumbImageFile(ImageFile.ImageFile):
|
|||
s = s.strip().split()
|
||||
|
||||
self.mode = "P"
|
||||
self.size = int(s[0]), int(s[1])
|
||||
self._size = int(s[0]), int(s[1])
|
||||
|
||||
self.palette = ImagePalette.raw("RGB", PALETTE)
|
||||
|
||||
|
|
|
@ -63,7 +63,7 @@ class XbmImageFile(ImageFile.ImageFile):
|
|||
)
|
||||
|
||||
self.mode = "1"
|
||||
self.size = xsize, ysize
|
||||
self._size = xsize, ysize
|
||||
|
||||
self.tile = [("xbm", (0, 0)+self.size, m.end(), None)]
|
||||
|
||||
|
|
|
@ -51,7 +51,7 @@ class XpmImageFile(ImageFile.ImageFile):
|
|||
if m:
|
||||
break
|
||||
|
||||
self.size = int(m.group(1)), int(m.group(2))
|
||||
self._size = int(m.group(1)), int(m.group(2))
|
||||
|
||||
pal = int(m.group(3))
|
||||
bpp = int(m.group(4))
|
||||
|
|
Loading…
Reference in New Issue
Block a user