当前位置: 首页 > 面试题库 >

Python图像库:如何将4张图像组合成2 x 2网格?

皇甫繁
2023-03-14
问题内容

我有4个带有动画图像的目录。我想拍摄一组图像,并为动画的每一帧将4张图像排列成2x2网格来生成单个图像。

到目前为止,我的代码是:

import Image

fluid64 = "Fluid64_half_size/00"
fluid128 = "Fluid128_half_size/00"
fluid512 = "Fluid512_half_size/00" 
fluid1024 = "Fluid1024_half_size/00"

out_image = "Fluid_all/00"

for pic in range(1, 26):
    blank_image = Image.open("blank.jpg")

    if pic < 10:
        image_num = "0"+str(pic)
    else:
        image_num = str(pic)

    image64 = Image.open(fluid64+image_num+".jpg")
    image128 = Image.open(fluid128+image_num+".jpg")
    image512 = Image.open(fluid512+image_num+".jpg")
    image1024 = Image.open(fluid1024+image_num+".jpg")
    out = out_image + image_num + ".jpg"

    blank_image.paste(image64, (0,0)).paste(fluid128, (400,0)).paste(fluid512, (0,300)).paste(fluid1024, (400,300)).save(out)

不知道为什么它不起作用。我收到错误消息:

Traceback (most recent call last):
  File "C:\Users\Casey\Desktop\Image_composite.py", line 24, in <module>
    blank_image.paste(image64, (0,0)).paste(fluid128, (400,0)).paste(fluid512, (
ste(fluid1024, (400,300)).save(out)
AttributeError: 'NoneType' object has no attribute 'paste'
shell returned 1

任何帮助都是极好的。谢谢!


问题答案:

唯一的问题是“粘贴”不返回图像对象-而是就地修改了“空白”图像。

因此,当调用第二个粘贴(使用fuild128图像的粘贴)时,它将尝试应用到“无”上-这是第一个图像的返回值。

如果这是您唯一的问题,只需每行进行一次粘贴调用,如下所示:

blank_image.paste(image64, (0,0))
blank_image.paste(fluid128, (400,0))
blank_image.paste(fluid512, (0,300))
blank_image.paste(fluid1024, (400,300))
blank_image.save(out)

尽管看起来您可能需要缩放每个图像,以便它们的格式也匹配。而且,“ image_num”变量的代码是不必要的。Python非常适合使用字符串-
只需执行以下操作:

image64 = Image.open(fluid64 + "%02d.jpg" % pic)


 类似资料:
  • 问题内容: 我有几个映像(第3方),例如,设置mysql,设置通用的php应用程序环境,设置第3方工具。 我想制作一个Dockerfile / Docker映像,将两个映像合并,然后运行更多命令 问题答案: 您可以将它们链接起来。你可以在这里找到更多 https://github.com/docker/docker/issues/3378#issuecomment-31314906 摘自上面的链接

  • 问题内容: 我需要拍摄图像并将其放置在新的生成的白色背景上,以便将其转换为可下载的桌面墙纸。因此该过程将进行: 生成具有1440x900尺寸的新全白图像 将现有图像放在顶部居中 另存为单个图像 在PIL中,我看到了该对象,但是没有任何迹象表明它可以将现有的图像数据绘制到另一个图像上。任何人都可以推荐的建议或链接? 问题答案: 这可以通过Image实例的方法来完成: 可以在Nadia Alramli

  • 问题内容: 我要求压缩文件大小小于500kb的所有已上传图像,我已经在google上搜索了,我只能看到: 如果我采用这种方法,则必须检查压缩后图像是否小于500kb,如果不是,则选择较低的质量和尺寸。 有更好的方法吗? 问题答案: JPEG压缩事先无法预测。您所描述的方法,压缩和测量并重试,是我知道的唯一方法。 您可以尝试压缩具有不同质量设置的许多典型图像,以了解最佳起点,以及猜测设置的更改将如何

  • 我有一个url数组,我必须加载所有图像并将其放入图像数组。 我在试这个 但它不起作用。我该怎么做?

  • 问题内容: 我想将文本图像分成组成字符,也作为图像。例如,使用下面的示例,我最终得到14张图像。 我只会在一行上使用文本,因此y高度并不重要-我需要找到的是每个字母的开头和结尾,并裁剪到这些坐标。这样,我还可以避免出现“ i”,“ j”等问题。 我是图像处理的新手,我不确定该怎么做。某种形式的边缘检测?有没有办法确定连续的单色区域?任何帮助都很棒。 为了提高我的Python技能和对许多可用库的熟悉

  • 本文向大家介绍python实现两张图片的像素融合,包括了python实现两张图片的像素融合的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了python实现两张图片像素融合的具体代码,供大家参考,具体内容如下 通过计算两张图片的颜色直方图特征,利用直方图对图片的颜色进行融合。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。