我在Blender工作,所以我想使用我在互联网上找到的凹凸贴图。 图像为here。但是,当我试图使用它时,Blender崩溃了。我假设发生这种情况是因为图像的大小。这就是我想创建一个可以调整图像大小的简单脚本的原因。
这是我的剧本:
from PIL import Image
from math import sqrt
path = raw_input("Enter file path: ")
Image.warnings.simplefilter('ignore', Image.DecompressionBombWarning)
img = Image.open(path)
size = img.size
pixelsize = size[0] * size[1]
print "Current pixel size:", pixelsize
maxsize = input("Enter maximum pixel size: ")
img = img.convert(mode="RGB")
square1 = sqrt(pixelsize)
ratio = (size[0] / square1, size[1] / square1)
square2 = sqrt(maxsize)
newsize = (int(round(maxsize * ratio[0])), int(round(maxsize * ratio[1])))
img = img.resize(newsize)
oldname = path.split("/")[-1]
newname = "SMALLER_" + oldname
img.save(newname)
当我运行脚本时,我收到以下错误:
Traceback (most recent call last):
File "C:/Users/*****/Desktop/smaller/makeImageSmaller.py", line 19, in <module>
img = img.resize(newsize)
File "C:\Python27\lib\site-packages\PIL\Image.py", line 1550, in resize
return self._new(self.im.resize(size, resample))
ValueError: image has wrong mode
从脚本中可以看出,我已经尝试将模式更改为&#34; RGB&#34; (第14行),假设这样可以解决问题。
图像非常大但我没有收到内存错误。
我坚持这个问题很长一段时间,我只是不知道问题是什么。任何帮助将不胜感激。
答案 0 :(得分:0)
尝试使用resample
方法的resize()
参数进行播放。
尽管根据提供的文档字符串,此参数是可选的:
重采样–可选的重采样过滤器。这可以是 PIL.Image.NEAREST(使用最近的邻居),PIL.Image.BILINEAR(线性 插值),PIL.Image.BICUBIC(三次样条插值)或 PIL.Image.LANCZOS(高质量的下采样滤波器)。如果省略,或者 如果图像的模式为“ 1”或“ P”,则将其设置为PIL.Image.NEAREST。
我想明确指定它可能会有所帮助。至少它对我有帮助。