Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ValueError:磁贴无法扩展外部图像_Python_Python 3.x_Image_Python Imaging Library - Fatal编程技术网

Python ValueError:磁贴无法扩展外部图像

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

我想将我的图像调整为以下比例:重新缩放范围为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.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请随意在答案中共享代码,或在编辑部分调整我的代码(如果可能)。