From 63879f04b119551a3d562dd2da24464e199b9ddf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milo=C5=A1=20Komar=C4=8Devi=C4=87?= <4973094+kmilos@users.noreply.github.com> Date: Fri, 1 Oct 2021 13:50:02 +0200 Subject: [PATCH] Make TIFF strip size configurable --- src/PIL/TiffImagePlugin.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/PIL/TiffImagePlugin.py b/src/PIL/TiffImagePlugin.py index eb33e3218..ab9ccd1cd 100644 --- a/src/PIL/TiffImagePlugin.py +++ b/src/PIL/TiffImagePlugin.py @@ -58,6 +58,7 @@ logger = logging.getLogger(__name__) READ_LIBTIFF = False WRITE_LIBTIFF = False IFD_LEGACY_API = True +STRIP_SIZE = 65536 II = b"II" # little-endian (Intel style) MM = b"MM" # big-endian (Motorola style) @@ -1617,9 +1618,9 @@ def _save(im, fp, filename): ifd[COLORMAP] = tuple(v * 256 for v in lut) # data orientation stride = len(bits) * ((im.size[0] * bits[0] + 7) // 8) - # aim for 64 KB strips when using libtiff writer + # aim for given strip size (64 KB by default) when using libtiff writer if libtiff: - rows_per_strip = min((2 ** 16 + stride - 1) // stride, im.size[1]) + rows_per_strip = min(STRIP_SIZE // stride, im.size[1]) # JPEG encoder expects multiple of 8 rows if compression == "jpeg": rows_per_strip = min(((rows_per_strip + 7) // 8) * 8, im.size[1])