9

我想将一堆图像与 PIL 一起粘贴。出于某种原因,当我运行该行时blank.paste(img,(i*128,j*128)),出现以下错误:ValueError: cannot determine region size; use 4-item box

我尝试弄乱它并使用它所说的具有 4 个元素的元组(例如(128,128,128,128)),但它给了我这个错误:SystemError: new style getargs format but argument is not a tuple

每个图像都是 128x 并且具有“x_y.png”的命名样式,其中 x 和 y 是从 0 到 39。我的代码如下。

from PIL import Image

loc = 'top right/'
blank = Image.new("RGB", (6000,6000), "white")

for x in range(40):
    for y in reversed(range(40)):
        file = str(x)+'_'+str(y)+'.png'
        img = open(loc+file)
        blank.paste(img,(x*128,y*128))

blank.save('top right.png')

我怎样才能让它工作?

4

3 回答 3

6

这对我有用,我使用的是 Odoo v9,我有枕头 4.0。

我用 ubuntu 在我的服务器中完成了它的步骤:

# pip uninstall pillow
# pip install Pillow==3.4.2
# /etc/init.d/odoo restart
于 2017-04-11T11:53:29.267 回答
5

您没有正确加载图像。内置函数open只是打开一个新的文件描述符。要使用 PIL 加载图像,请Image.open改用:

from PIL import Image
im = Image.open("bride.jpg") # open the file and "load" the image in one statement

如果您有理由使用内置 open,请执行以下操作:

fin = open("bride.jpg") # open the file
img = Image.open(fin) # "load" the image from the opened file

使用 PIL,“加载”图像意味着读取图像标题。PIL 是惰性的,因此它在需要之前不会加载实际的图像数据。

另外,考虑使用os.path.join代替字符串连接。

于 2013-10-21T05:09:31.847 回答
1

对我来说,上面的方法不起作用。

在检查了 image.py之后,我发现还image.paste(color)需要一个参数,比如image.paste(color, mask=original). 通过将其更改为以下内容对我来说效果很好:

image.paste(color, box=(0, 0) + original.size)
于 2018-10-31T14:52:55.373 回答