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

2024-01-09

我有 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 图像的粘贴),它会尝试应用于“None” - 这是第一个图像的返回值。

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

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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 图像库:如何将 4 张图像组合成 2 x 2 网格? 的相关文章

随机推荐

  • 如何删除除最后五个之外的所有 Git 提交

    我有一个非常大的 Git 存储库 其中仅包含经常更改的二进制文件 当然 Git 存储库是much比其中的实际文件大 我并不真正关心旧的历史记录 我只需要一些较新的历史记录就能够恢复一些错误的更改 假设我想删除除最后五个之外的所有提交 当然
  • Dockerized Node js 应用程序无法启动

    在对我的演示 Express js 应用程序进行 Docker 化并启动容器后 由于以下原因我无法访问该服务 Connection Timeout dockerized 之前的 for 项目的 URL 产生了 Hello world 在浏览
  • 通过相对路径查找外部测试文件进行单元测试 c++ cmake guest

    访问 C 项目单元测试的外部测试文件的正确方法是什么 我正在使用 CMake 和 Gtest 这是目录结构的示例 Project src test unit tests here test data data file here Thank
  • 从ortools获取SAT解决方案列表

    我正在尝试找出如何从以下位置获取可能解决方案的完整列表ortools sat python cp model 我知道我可以打印它们 如下例所示 但我不清楚如何获取这些值 例如作为嵌套列表或字典列表 我尝试通过修改来编写自己的回调类VarAr
  • “创建数据库权限被拒绝”错误

    我在安装了 Windows XP 操作系统的系统上安装了 SQL SERVER 2008 R2 每当我尝试创建新数据库时 它都会显示错误 CREATE DATABASE PERMISSION DENIED IN DATABASE maste
  • echo 在 bash 脚本中输出 -e 参数。我怎样才能防止这种情况发生?

    我读过关于 echo 的手册页 它告诉我 e 参数将允许转义字符 例如换行符的转义 n 具有其特殊含义 当我输入命令时 echo e foo nbar 进入交互式 bash shell 我得到了预期的输出 foo bar 但是当我使用相同的
  • Android css 字体大小 vw vh 响应式替代方案

    安卓上有替代方案吗 我知道我可以为每个屏幕密度和尺寸创建样式文件并在那里更改字体大小 但是提供单一相对 自动可缩放值 就像在 CSS 中那样 会很棒 我很惊讶 Android 没有它 并且 svg 可绘制对象仅在最新的 api 中支持 谢谢
  • 动态创建字段的 Jquery 验证

    我有基本的 javascript 代码来生成输入文本区域 如下所示 btnAdd click function e var itemIndex container input iHidden length e preventDefault
  • 使用不同结合性和相同优先级的相邻运算符消除表达式的歧义

    假设我有一个如下表达式 其中 and 是具有相同优先级但不同结合性的二元运算符 x y z Would y属于 or 并基于什么标准 根据 Edsgar Dijkstra 的调车场算法 http en wikipedia org wiki
  • PHPMailer 发生致命错误

    我正在尝试使用 PHPMailer 通过 gmail SMTP 服务器发送邮件 但出现致命错误 并且找不到任何解决方案 我的 php 文件
  • C++/CLI:为什么我不能通过引用传递字符串?

    为什么 Microsoft 的 C CLI 不允许我通过引用传递字符串 我收到以下错误 C3699 无法在类型 System String 上使用此间接寻址 首先 NET 实际上有两种 Microsoft 特定的 C 方言 较旧的 托管 C
  • ORMLite - 查询外域

    使用 Android 版 ORMLite 我需要构建一个按订单 ID 或客户名称返回订单的查询 请考虑以下类声明 DatabaseTable tableName order public class Order DatabaseField
  • Java:如何将控件而不是其数据拖放到新位置?

    在Java中 当拖动的项目是源控件本身时 执行拖放的最佳方法是什么 我知道控件也只不过是数据 但差异确实会影响 UI 我正在创建一个纸牌风格的游戏 其中有从 JLabel 派生的 Card 类的卡片对象 我想将该卡拖放到另一个位置 方法是将
  • 从 kubernetes 集群中完全卸载 istio(所有组件)

    我使用以下命令安装了 istio VERSION 1 0 5 GCP gcloud K8S kubectl K8S apply f istio VERSION install kubernetes helm istio templates
  • 为整个数据库创建常量字符串

    我对 SQL 还很陌生 所以我有一些小问题需要解决 我正在 Acqua Data Studio 中运行 Postgres 数据库 其中一些查询遵循相同的模型 这些查询中的一些变量是相同的 但将来可能会发生变化 考虑一个优化的数据库 更改常量
  • 如何在 Android 中分享到应用程序时制作叠加层?

    我正在开发一个 Android 应用程序 该应用程序接收来自其他应用程序的内容 通过 Android 意图共享它 我做了意图过滤器来将共享内容接收到应用程序中 但我看到像 Pocket 这样的应用程序做到了这一点 而没有在原始应用程序上留下
  • OAuth2 登录 SoundCloud 最近返回错误 Domain=NXOAuth2HTTPErrorDomain Code=401“HTTP 错误:401”

    我正在尝试在使用 Objective C SoundCloudAPI 框架开发的 iOS 应用程序上登录我的 SoundCloud 帐户https github com sangtn SoundCloudAPI https github c
  • Rails - 按日期范围过滤

    尝试创建一个过滤器选择以查找给定日期范围内课程日期的时间表 管理员控制器 def find schedules if params start date params end date start date params start dat
  • Android 使用 BroadCastReceiver 阻止传入短信

    我想只要我的应用程序正在运行就阻止传入的短信 我可以实现这一点 但问题是在我关闭应用程序甚至重新启动甚至卸载它后 用户将无法再接收短信 那么我怎样才能使应用程序仅在运行时以及关闭或卸载等时阻止传入的短信 以停止阻止短信 这是我的代码 广播接
  • Python 图像库:如何将 4 张图像组合成 2 x 2 网格?

    我有 4 个包含动画图像的目录 我想获取这组图像并生成一个图像 其中为动画的每一帧将 4 个图像排列成 2x2 网格 到目前为止我的代码是 import Image fluid64 Fluid64 half size 00 fluid128