forked from josch/img2pdf
use context manager instead of manually closing BytesIO and PIL.Image
This commit is contained in:
parent
02c85a50ad
commit
2eabebb513
1 changed files with 17 additions and 12 deletions
|
@ -1428,18 +1428,23 @@ def read_images(rawdata, colorspace, first_frame_only=False):
|
|||
):
|
||||
if first_frame_only and img_page_count > 0:
|
||||
break
|
||||
rawframe = BytesIO(rawdata[offset : offset + mpent["Size"]])
|
||||
imframe = Image.open(rawframe)
|
||||
with BytesIO(rawdata[offset : offset + mpent["Size"]]) as rawframe:
|
||||
with Image.open(rawframe) as imframe:
|
||||
# The first frame contains the data that makes the JPEG a MPO
|
||||
# Could we thus embed an MPO into another MPO? Lets not support
|
||||
# such madness ;)
|
||||
if img_page_count > 0 and imframe.format != "JPEG":
|
||||
raise Exception("MPO payload must be a JPEG %s", imframe.format)
|
||||
color, ndpi, imgwidthpx, imgheightpx, rotation, iccp = get_imgmetadata(
|
||||
(
|
||||
color,
|
||||
ndpi,
|
||||
imgwidthpx,
|
||||
imgheightpx,
|
||||
rotation,
|
||||
iccp,
|
||||
) = get_imgmetadata(
|
||||
imframe, ImageFormat.JPEG, default_dpi, colorspace
|
||||
)
|
||||
imframe.close()
|
||||
rawframe.close()
|
||||
if color == Colorspace["1"]:
|
||||
raise JpegColorspaceError("jpeg can't be monochrome")
|
||||
if color == Colorspace["P"]:
|
||||
|
|
Loading…
Reference in a new issue