mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-02-28 18:10:33 +03:00
avoid divisions to keep integer
This commit is contained in:
parent
bb889a59d6
commit
e162963064
|
@ -200,7 +200,7 @@ class ImageFile(Image.Image):
|
||||||
for decoder_name, extents, offset, args in self.tile:
|
for decoder_name, extents, offset, args in self.tile:
|
||||||
decoder = Image._getdecoder(self.mode, decoder_name,
|
decoder = Image._getdecoder(self.mode, decoder_name,
|
||||||
args, self.decoderconfig)
|
args, self.decoderconfig)
|
||||||
seek(int(offset))
|
seek(offset)
|
||||||
decoder.setimage(self.im, extents)
|
decoder.setimage(self.im, extents)
|
||||||
if decoder.pulls_fd:
|
if decoder.pulls_fd:
|
||||||
decoder.setfd(self.fp)
|
decoder.setfd(self.fp)
|
||||||
|
|
|
@ -45,8 +45,8 @@ class SgiImageFile(ImageFile.ImageFile):
|
||||||
def _open(self):
|
def _open(self):
|
||||||
|
|
||||||
# HEAD
|
# HEAD
|
||||||
offset = 512
|
headlen = 512
|
||||||
s = self.fp.read(offset)
|
s = self.fp.read(headlen)
|
||||||
|
|
||||||
# magic number : 474
|
# magic number : 474
|
||||||
if i16(s) != 474:
|
if i16(s) != 474:
|
||||||
|
@ -55,8 +55,8 @@ class SgiImageFile(ImageFile.ImageFile):
|
||||||
# compression : verbatim or RLE
|
# compression : verbatim or RLE
|
||||||
compression = i8(s[2])
|
compression = i8(s[2])
|
||||||
|
|
||||||
# depth : 1 or 2 bytes (8bits or 16bits)
|
# bpc : 1 or 2 bytes (8bits or 16bits)
|
||||||
depth = i8(s[3]) * 8
|
bpc = i8(s[3])
|
||||||
|
|
||||||
# dimension : 1, 2 or 3 (depending on xsize, ysize and zsize)
|
# dimension : 1, 2 or 3 (depending on xsize, ysize and zsize)
|
||||||
dimension = i16(s[4:])
|
dimension = i16(s[4:])
|
||||||
|
@ -71,14 +71,14 @@ class SgiImageFile(ImageFile.ImageFile):
|
||||||
zsize = i16(s[10:])
|
zsize = i16(s[10:])
|
||||||
|
|
||||||
# layout
|
# layout
|
||||||
layout = depth, dimension, zsize
|
layout = bpc, dimension, zsize
|
||||||
|
|
||||||
# determine mode from bits/zsize
|
# determine mode from bits/zsize
|
||||||
if layout == (8, 2, 1) or layout == (8, 1, 1):
|
if layout == (1, 2, 1) or layout == (1, 1, 1):
|
||||||
self.mode = "L"
|
self.mode = "L"
|
||||||
elif layout == (8, 3, 3):
|
elif layout == (1, 3, 3):
|
||||||
self.mode = "RGB"
|
self.mode = "RGB"
|
||||||
elif layout == (8, 3, 4):
|
elif layout == (1, 3, 4):
|
||||||
self.mode = "RGBA"
|
self.mode = "RGBA"
|
||||||
else:
|
else:
|
||||||
raise ValueError("Unsupported SGI image mode")
|
raise ValueError("Unsupported SGI image mode")
|
||||||
|
@ -90,16 +90,17 @@ class SgiImageFile(ImageFile.ImageFile):
|
||||||
|
|
||||||
# decoder info
|
# decoder info
|
||||||
if compression == 0:
|
if compression == 0:
|
||||||
pagesize = xsize * ysize * (depth / 8)
|
pagesize = xsize * ysize * bpc
|
||||||
self.tile = []
|
self.tile = []
|
||||||
|
offset = headlen
|
||||||
for layer in self.mode:
|
for layer in self.mode:
|
||||||
self.tile.append(
|
self.tile.append(
|
||||||
("raw", (0, 0) + self.size,
|
("raw", (0, 0) + self.size,
|
||||||
offset, (layer, 0, orientation)))
|
offset, (layer, 0, orientation)))
|
||||||
offset = offset + pagesize
|
offset += pagesize
|
||||||
elif compression == 1:
|
elif compression == 1:
|
||||||
self.tile = [("sgi_rle", (0, 0) + self.size,
|
self.tile = [("sgi_rle", (0, 0) + self.size,
|
||||||
offset, (self.mode, orientation, depth))]
|
headlen, (self.mode, orientation, bpc * 8))]
|
||||||
|
|
||||||
|
|
||||||
def _save(im, fp, filename):
|
def _save(im, fp, filename):
|
||||||
|
|
Loading…
Reference in New Issue
Block a user