在Python中调整tiff图像的大小

时间:2017-12-11 14:41:13

标签: python image tiff pillow

尝试使用以下方法调整图像大小(重量> 100 MB)

>>> from PIL import Image
>>> image = Image.open(path_to_the_file)
>>> new_image = image.resize((200, 200))

并收到ValueError:tile无法扩展到图像外部。

原始图像的尺寸为

>>> image.size
>>> (4922, 3707)

我在缩略图,旋转等时收到的错误。

我做错了什么?

编辑: 使用ImageMagic检查图像:

$ identify file.tif
file.tif[0] TIFF 4922x3707 4922x3707+0+0 32-bit Grayscale Gray 31.23MB   0.000u 0:00.009
file.tif[1] TIFF 2461x1854 2461x1854+0+0 32-bit Grayscale Gray 31.23MB 0.000u 0:00.000
filetif[2] TIFF 1231x927 1231x927+0+0 32-bit Grayscale Gray 31.23MB 0.000u 0:00.000
file.tif[3] TIFF 616x464 616x464+0+0 32-bit Grayscale Gray 31.23MB 0.000u 0:00.000
file.tif[4] TIFF 308x232 308x232+0+0 32-bit Grayscale Gray 31.23MB 0.000u 0:00.000
file.tif[5] TIFF 154x116 154x116+0+0 32-bit Grayscale Gray 31.23MB 0.000u 0:00.000
identify: Unknown field with tag 33550 (0x830e) encountered. `TIFFReadDirectory' @ warning/tiff.c/TIFFWarnings/881.
identify: Unknown field with tag 33922 (0x8482) encountered. `TIFFReadDirectory' @ warning/tiff.c/TIFFWarnings/881.
identify: Unknown field with tag 34735 (0x87af) encountered. `TIFFReadDirectory' @ warning/tiff.c/TIFFWarnings/881.
identify: Unknown field with tag 34736 (0x87b0) encountered. `TIFFReadDirectory' @ warning/tiff.c/TIFFWarnings/881.

3 个答案:

答案 0 :(得分:0)

您应该安装pytho-resize-image包。

一个例子

from PIL import Image

from resizeimage import resizeimage


with open('acajeb-image.jpeg', 'r+b') as f:
    with Image.open(f) as image:
        cover = resizeimage.resize_cover(image, [200, 200])
        cover.save('test-image-cover.jpeg', image.format)

您可以使用

安装包
pip install python-resize-image

答案 1 :(得分:0)

尝试添加Image.ANTIALIAS参数:

new_image = image.resize((200, 200), Image.ANTIALIAS)

这在我之前的一个项目中对我有用。

答案 2 :(得分:0)

问题可能来自docs

  

请注意,当前版本的PIL中的双线性和双三次滤波器不适合大的下采样率(例如,在创建缩略图时)。你应该使用ANTIALIAS,除非速度比质量更重要。

在这种情况下,请添加代码Image.ANTIALIAS

from PIL import Image
image = Image.open(path_to_the_file)
new_image = image.resize((200, 200) Image.ANTIALIAS)

现在应该这样做。