[英]Can't apply image filters on 16-bit TIFs in PIL
我尝试使用python的PIL应用图像过滤器。 代码很简单:
im = Image.open(fnImage)
im = im.filter(ImageFilter.BLUR)
此代码在PNG,JPG和8位TIF上按预期工作。 但是,当我尝试在16位TIF上应用此代码时,我收到以下错误
ValueError: image has wrong mode
请注意,PIL能够在没有抱怨的情况下加载,调整大小并保存16位TIF,因此我假设此问题与过滤器相关。 但是, ImageFilter文档没有提到16位支持
有什么办法可以解决吗?
您的TIFF图像模式很可能是“I; 16”。 在当前版本的ImageFilter中,内核只能应用于“L”和“RGB”图像(参见ImageFilter.py的源代码)
尝试先转换为另一种模式:
im.convert('L')
如果失败,请尝试:
im.mode = 'I'
im = im.point(lambda i:i*(1./256)).convert('L').filter(ImageFilter.BLUR)
备注: Python和16 Bit Tiff可能重复
要继续前进,请尝试使用ImageMagick ,查找程序的PythonMagick挂钩。 在命令提示符下,您可以使用convert.exe image-16.tiff -blur 2x2 output.tiff
。 没有设法在我的Windows操作系统中安装PythonMagick,因为源需要编译。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.