mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-01-13 18:56:17 +03:00
Merge pull request #3717 from radarhere/ico_condition
Removed condition that was always true
This commit is contained in:
commit
87ddd07359
|
@ -105,53 +105,52 @@ class BmpImageFile(ImageFile.ImageFile):
|
||||||
# --------------------------------------------- Windows Bitmap v2 to v5
|
# --------------------------------------------- Windows Bitmap v2 to v5
|
||||||
# v3, OS/2 v2, v4, v5
|
# v3, OS/2 v2, v4, v5
|
||||||
elif file_info['header_size'] in (40, 64, 108, 124):
|
elif file_info['header_size'] in (40, 64, 108, 124):
|
||||||
if file_info['header_size'] >= 40: # v3 and OS/2
|
file_info['y_flip'] = i8(header_data[7]) == 0xff
|
||||||
file_info['y_flip'] = i8(header_data[7]) == 0xff
|
file_info['direction'] = 1 if file_info['y_flip'] else -1
|
||||||
file_info['direction'] = 1 if file_info['y_flip'] else -1
|
file_info['width'] = i32(header_data[0:4])
|
||||||
file_info['width'] = i32(header_data[0:4])
|
file_info['height'] = (i32(header_data[4:8])
|
||||||
file_info['height'] = (i32(header_data[4:8])
|
if not file_info['y_flip']
|
||||||
if not file_info['y_flip']
|
else 2**32 - i32(header_data[4:8]))
|
||||||
else 2**32 - i32(header_data[4:8]))
|
file_info['planes'] = i16(header_data[8:10])
|
||||||
file_info['planes'] = i16(header_data[8:10])
|
file_info['bits'] = i16(header_data[10:12])
|
||||||
file_info['bits'] = i16(header_data[10:12])
|
file_info['compression'] = i32(header_data[12:16])
|
||||||
file_info['compression'] = i32(header_data[12:16])
|
# byte size of pixel data
|
||||||
# byte size of pixel data
|
file_info['data_size'] = i32(header_data[16:20])
|
||||||
file_info['data_size'] = i32(header_data[16:20])
|
file_info['pixels_per_meter'] = (i32(header_data[20:24]),
|
||||||
file_info['pixels_per_meter'] = (i32(header_data[20:24]),
|
i32(header_data[24:28]))
|
||||||
i32(header_data[24:28]))
|
file_info['colors'] = i32(header_data[28:32])
|
||||||
file_info['colors'] = i32(header_data[28:32])
|
file_info['palette_padding'] = 4
|
||||||
file_info['palette_padding'] = 4
|
self.info["dpi"] = tuple(
|
||||||
self.info["dpi"] = tuple(
|
map(lambda x: int(math.ceil(x / 39.3701)),
|
||||||
map(lambda x: int(math.ceil(x / 39.3701)),
|
file_info['pixels_per_meter']))
|
||||||
file_info['pixels_per_meter']))
|
if file_info['compression'] == self.BITFIELDS:
|
||||||
if file_info['compression'] == self.BITFIELDS:
|
if len(header_data) >= 52:
|
||||||
if len(header_data) >= 52:
|
for idx, mask in enumerate(['r_mask',
|
||||||
for idx, mask in enumerate(['r_mask',
|
'g_mask',
|
||||||
'g_mask',
|
'b_mask',
|
||||||
'b_mask',
|
'a_mask']):
|
||||||
'a_mask']):
|
file_info[mask] = i32(
|
||||||
file_info[mask] = i32(
|
header_data[36 + idx * 4:40 + idx * 4]
|
||||||
header_data[36 + idx * 4:40 + idx * 4]
|
)
|
||||||
)
|
else:
|
||||||
else:
|
# 40 byte headers only have the three components in the
|
||||||
# 40 byte headers only have the three components in the
|
# bitfields masks, ref:
|
||||||
# bitfields masks, ref:
|
# https://msdn.microsoft.com/en-us/library/windows/desktop/dd183376(v=vs.85).aspx
|
||||||
# https://msdn.microsoft.com/en-us/library/windows/desktop/dd183376(v=vs.85).aspx
|
# See also
|
||||||
# See also
|
# https://github.com/python-pillow/Pillow/issues/1293
|
||||||
# https://github.com/python-pillow/Pillow/issues/1293
|
# There is a 4th component in the RGBQuad, in the alpha
|
||||||
# There is a 4th component in the RGBQuad, in the alpha
|
# location, but it is listed as a reserved component,
|
||||||
# location, but it is listed as a reserved component,
|
# and it is not generally an alpha channel
|
||||||
# and it is not generally an alpha channel
|
file_info['a_mask'] = 0x0
|
||||||
file_info['a_mask'] = 0x0
|
for mask in ['r_mask', 'g_mask', 'b_mask']:
|
||||||
for mask in ['r_mask', 'g_mask', 'b_mask']:
|
file_info[mask] = i32(read(4))
|
||||||
file_info[mask] = i32(read(4))
|
file_info['rgb_mask'] = (file_info['r_mask'],
|
||||||
file_info['rgb_mask'] = (file_info['r_mask'],
|
file_info['g_mask'],
|
||||||
file_info['g_mask'],
|
file_info['b_mask'])
|
||||||
file_info['b_mask'])
|
file_info['rgba_mask'] = (file_info['r_mask'],
|
||||||
file_info['rgba_mask'] = (file_info['r_mask'],
|
file_info['g_mask'],
|
||||||
file_info['g_mask'],
|
file_info['b_mask'],
|
||||||
file_info['b_mask'],
|
file_info['a_mask'])
|
||||||
file_info['a_mask'])
|
|
||||||
else:
|
else:
|
||||||
raise IOError("Unsupported BMP header type (%d)" %
|
raise IOError("Unsupported BMP header type (%d)" %
|
||||||
file_info['header_size'])
|
file_info['header_size'])
|
||||||
|
|
Loading…
Reference in New Issue
Block a user