使用MoviePy调整ImageClip尺寸报错:PIL.Image无ANTIALIAS属性
解决ImageClip.resize触发ANTIALIAS属性错误的问题
问题原因
Pillow 9.1.0及以上版本中,Image.ANTIALIAS已被废弃并正式重命名为Image.LANCZOS。但MoviePy的内部代码仍在使用旧的ANTIALIAS常量,所以哪怕你自己指定了LANCZOS作为插值方法,库内部的调用还是会触发这个属性错误。
解决方法
方法1:临时添加别名(最快捷,无需改源码)
在代码开头给PIL.Image手动添加ANTIALIAS别名,指向LANCZOS,兼容MoviePy的内部调用:
from moviepy.editor import * from PIL import Image # 兼容MoviePy内部的旧常量调用 Image.ANTIALIAS = Image.LANCZOS image = ImageClip('2.jpg') resized_image = image.resize((400, 400), Image.LANCZOS) resized_image.save_frame('resized_image.jpg')
方法2:修改MoviePy源码(彻底解决)
找到MoviePy中处理图片缩放的文件:
- 一般路径为
moviepy/video/io/ImageSequenceClip.py或moviepy/video/VideoClip.py - 搜索文件中的
Image.ANTIALIAS,全部替换为Image.LANCZOS - 保存修改后重启Python环境即可
方法3:降级Pillow版本(应急方案,不推荐)
如果不想改代码或源码,可以把Pillow降级到9.0.1及以下版本:
pip install pillow==9.0.1
内容的提问来源于stack exchange,提问作者Tejash Vaishnav
相关产品推荐
相关产品推荐

