在python中使用pil读取tif图像时的值错误?

时间:2017-07-04 13:50:46

标签: python python-imaging-library tiff

我必须阅读大小 2200x 2200 的tif图像并输入uint16。我使用带有anaconda python的PIL库如下:

from PIL import Image
img = Image.open('test.tif')
img.imshow()

我收到了以下错误:ValueError: tile cannot extend outside image

这可能是什么原因以及如何解决这个问题?我使用的是anaconda python3.6.1版本

2 个答案:

答案 0 :(得分:0)

这是因为图像编码有错误; TIF文件中的切片实际上扩展到图像外部。您可以通过查看磁贴来确认:

img.tile

将输出如下内容:

[('tiff_lzw', (0, 0, 240, 240), 16, 'RGB'), ('tiff_lzw', (240, 0, 480, 240), 94905, 'RGB'), ... ('tiff_lzw', (720, 960, 960, 1200), 1711985, 'RGB'), ('tiff_lzw', (960, 960, 1200, 1200), 1730566, 'RGB')]

如上图所示,图片尺寸为1000x1000像素,但瓷砖显然会延伸到1200x1200。您可以将图像裁剪为预期大小(丢失一些信息),或者扩展图像大小以包括所有图块。请参见此处的示例:

https://github.com/python-pillow/Pillow/issues/3044

im.size = (1000, 1000)im.tile = [e for e in im.tile if e[1][2] < 1200 and e[1][3] < 1200]

答案 1 :(得分:-1)

问题是PIL希望在文件名末尾看到“.tiff”。你有“.tif”。解决方案是将您的文件重命名为“test.tiff”。