首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python PIL粘贴

Python PIL粘贴
EN

Stack Overflow用户
提问于 2013-10-21 12:36:27
回答 3查看 17.6K关注 0票数 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。我的代码如下。

代码语言:javascript
复制
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')

我怎么才能让它工作呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-21 13:09:32

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

代码语言:javascript
复制
from PIL import Image
im = Image.open("bride.jpg") # open the file and "load" the image in one statement

如果你有理由使用内置的open,那么可以这样做:

代码语言:javascript
复制
fin = open("bride.jpg") # open the file
img = Image.open(fin) # "load" the image from the opened file

使用PIL,“加载”图像意味着读取图像标题。PIL是惰性的,所以它直到需要时才加载实际的图像数据。

另外,考虑使用os.path.join而不是字符串连接。

票数 5
EN

Stack Overflow用户

发布于 2017-04-11 19:53:29

这对我来说很有效,我用的是Odoo v9,我用的是Pillow4.0。

我在我的服务器上用ubuntu实现了这一点:

代码语言:javascript
复制
# pip uninstall pillow
# pip install Pillow==3.4.2
# /etc/init.d/odoo restart
票数 6
EN

Stack Overflow用户

发布于 2018-10-31 22:52:55

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

在检查了image.py之后,我发现image.paste(color)还需要一个像image.paste(color, mask=original)这样的参数。它对我来说效果很好,只需将其更改为:

代码语言:javascript
复制
image.paste(color, box=(0, 0) + original.size)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19486337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档