Python ValueError:磁贴无法扩展外部图像
我想将我的图像调整为以下比例:重新缩放范围为x0.5、x0.75、x0.9、x1.1、x1.25、x1.5的图像基本上我想输入的是0.5,我文件夹中的所有图像大小将减半。 请注意,我的图像有不同的大小,是的,我知道如何获得图像的高度和宽度,并将其与输入相乘,是的,我在这里检查了前面的问题,但从那以后有更好的方法吗 编辑:可能是这样的:Python ValueError:磁贴无法扩展外部图像,python,python-3.x,image,python-imaging-library,Python,Python 3.x,Image,Python Imaging Library,我想将我的图像调整为以下比例:重新缩放范围为x0.5、x0.75、x0.9、x1.1、x1.25、x1.5的图像基本上我想输入的是0.5,我文件夹中的所有图像大小将减半。 请注意,我的图像有不同的大小,是的,我知道如何获得图像的高度和宽度,并将其与输入相乘,是的,我在这里检查了前面的问题,但从那以后有更好的方法吗 编辑:可能是这样的: import os from PIL import Image path = path_to_input_images for filename in os.li
import os
from PIL import Image
path = path_to_input_images
for filename in os.listdir(path + 'image/'):
im = Image.open(path + 'image/' + filename)
im.size = list(im.size)
im.size[0] = int(float(im.size[0]) * 0.5)
im.size[1] = int(float(im.size[1]) * 0.5)
im.size = tuple(im.size)
im.save(path + 'resized_images'+ filename)
但我得到了一个错误,即
ValueError:tile无法扩展外部图像
我认为没有更简单的方法。只要把代码放在一个实用函数中,就可以了
import os
from PIL import Image
def rescale(im, ratio):
size = [int(x*ratio) for x in im.size]
im = im.resize(size, Image.ANTIALIAS)
return im
def process_dir(path):
image_dir = os.path.join(path, 'image')
for filename in os.listdir(image_dir):
filepath = os.path.join(image_dir, filename)
im = Image.open(filepath)
im = rescale(im, 0.5)
im.save(path_to_output)
process_dir(path_to_input_images)
我无法重现您看到的
ValueError
,但我可以生成SystemError
:
SystemError: tile cannot extend outside image
通过展开im.size
,然后尝试将其保存到新文件:
In [78]: im = Image.open(FILENAME)
In [79]: im.size
Out[79]: (250, 250)
In [82]: im.size = (500, 500)
In [83]: im.save('/tmp/out.png')
SystemError: tile cannot extend outside image
不要尝试重新分配
im.size
。要重新缩放图像,请调用或。由于您可能希望按大于1的比例重新缩放图像,因此在此处使用。我认为没有更简单的方法。只要把代码放在一个实用函数中,就可以了。如果您想隐藏实用程序函数的混乱,请将其放在一个单独的模块中,并将其导入主程序。@unutbu请随意在答案中共享代码,或在编辑部分调整我的代码(如果可能)。