PIL:无法保存粘贴有png的jpg

2024-01-04

我正在尝试将 png 粘贴到 jpg 上。这是代码:

#!/usr/bin/env python3

from PIL import Image
from PIL import ImageDraw

im = Image.open("existing.jpg")
logo = Image.open("python-32.png")

back = Image.new('RGBA', im.size)
back.paste(im)
poly = Image.new('RGBA', (512,512))
pdraw = ImageDraw.Draw(poly)
pdraw.polygon([(128,128),(384,384),(128,384),(384,128)],
          fill=(255,255,255,127),outline=(255,255,255,255))

back.paste(poly, (0,0), mask=poly)
back.paste(logo, (im.size[0]-logo.size[0], im.size[1]-logo.size[1]), mask=logo)

back.show()

当我执行上面的代码时,我可以看到 PNG 图像显示为随机名称,例如tmpc8rb455z.PNG.

我也尝试用jpg格式保存,但失败了。这意味着当我添加back.save('res.jpg', 'JPEG')并执行它,我得到这样的错误:

Traceback (most recent call last):
  File "test.py", line 32, in <module>
    back.save('res.jpg', 'JPEG')
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/PIL/Image.py", line 1893, in save
    save_handler(self, fp, filename)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/PIL/JpegImagePlugin.py", line 604, in _save
    raise IOError("cannot write mode %s as JPEG" % im.mode)
OSError: cannot write mode RGBA as JPEG

然后我尝试将其另存为PNG:
back.save('res.png')

它可以工作,但是大小res.png是 5 倍大existing.jpg。我无法接受如此巨大的图像。


您正在尝试以 JPEG 格式保存 RGBA 图像,该格式不支持透明度(RGBA 中的 A 代表 Alpha 通道)。

当您将其另存为 PNG 时,它会起作用,因为该格式支持透明度,但文件大小往往较大,因为 PNG 不像 JPEG 那样压缩图像数据。

如果要将 PIL 图像保存为 JPEG,并且透明度对您来说不重要,则需要首先将其转换为 RGB。这可以按如下方式完成:

im = im.convert("RGB")

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

PIL:无法保存粘贴有png的jpg 的相关文章

  • Python Pandas 滚动聚合一列列表

    我有一个简单的数据框 df 和一列列表lists 我想根据以下内容生成一个附加列lists The df好像 import pandas as pd lists 1 1 2 1 2 3 3 2 9 7 9 4 2 7 3 5 create
  • 如何把父母和孩子联系起来?

    有两个简单的类 一个只有parent属性 并且两者兼而有之parent and children属性 这意味着同时具备两者的人parent and children继承自唯一的parent 这是只有parent属性 我们就这样称呼它吧Chi
  • 为什么 Mypy 在 __init__ 中分配已在类主体中进行类型提示的属性时不给出键入错误?

    这是我的示例 python 文件 class Person name str age int def init self name age self name name self age age p Person 5 5 但当我跑步时myp
  • App Engine 上的 Django 与 webapp2 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何同时运行多个功能[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有以下代码 my func1 my func2 my func3 my func4 my func5 是否可以同时计算函数的数据 而
  • 使用管理员权限打开cmd(Windows 10)

    我有自己的 python 脚本来管理我的计算机上的 IP 地址 它主要在命令行 Windows 10 中执行netsh命令 您必须具有管理员权限 这是我自己的计算机 我是管理员 运行脚本时我已经使用管理员类型的用户 Adrian 登录 我无
  • 将整数系列转换为交替(双元)二进制系列

    我不知道如何最好地表达这个问题 因为在这里谷歌搜索和搜索总是让我找到更复杂的东西 我很确定这是基本的东西 但对于我的生活来说 我找不到一个好的方法来做到这一点下列 给定一个整数序列 比如说 for x in range 0 36 我想将这些
  • 使用 Pandas 从 csv 文件读取标题信息

    我有一个包含 14 行标题的数据文件 在标头中 有经纬度坐标和时间的元数据 我目前正在使用 pandas read csv filename delimiter header 14 读取文件 但这只是获取数据 我似乎无法获取元数据 有人知道
  • NSUserNotificationCenter.defaultUserNotificationCenter() 使用 PyInstaller 返回 None

    我正在尝试将通知发送到通知中心 Mac OSX 我正在使用 PyObjC 绑定来使用我们的 python 应用程序中的 cocoa api 我正在使用以下代码片段 import Foundation import objc NSUserNo
  • 为什么需要设置WORKON_HOME环境变量?

    我已经有一段时间没有使用 python 虚拟环境了 但我也安装了虚拟环境包装器 我的问题是 在文档页面中它说要这样做 export WORKON HOME Envs mkdir p WORKON HOME source usr local
  • 了解 Python 2.7 中的缩进错误

    在编写 python 代码时 我往往会遇到很多缩进错误 有时 当我删除并重写该行时 错误就会消失 有人可以为菜鸟提供 python 中 IndentationErrors 的高级解释吗 以下是我在玩 CheckIO 时收到的最近 inden
  • 无法通过 Android 应用程序访问我的笔记本电脑的本地主机

    因此 我在发布此内容之前做了一项研究 我发现的解决方案不起作用 更准确地说 连接到我的笔记本电脑的 IPv4192 168 XXX XXX 没用 连接到10 0 2 2 加上端口 不起作用 我需要测试使用 Django Rest 框架构建的
  • Flymake的临时文件可以在系统临时目录下创建吗?

    我目前正在使用以下代码在 emacs 中连接 Flymake 和 Pyflakes defun flymake create temp in system tempdir filename prefix make temp file or
  • Python:导入模块一次然后与多个文件共享

    我有如下文件 file1 py file2 py file3 py 假设这三个都使用 lib7 py lib8 py lib9 py 目前 这三个文件中的每一个都有以下行 import lib7 import lib8 import lib
  • 如何从邻接表高效创建稀疏邻接矩阵?

    我正在与last fm http labrosa ee columbia edu millionsong lastfm数据集来自百万歌曲数据集 http labrosa ee columbia edu millionsong 数据以一组 j
  • 将 Django 中的所有视图限制为经过身份验证的用户

    我是 Django 新手 我正在开发一个项目 该项目有一个登录页面作为其索引和一个注册页面 其余页面都必须仅限于登录用户 如果未经身份验证的用户尝试访问这些页面 则必须将他 她重定向到登录页面 我看到 login required装饰器会将
  • 如何在引发异常时将变量传递给异常并在异常时检索它?

    现在我只有一个空白的异常类 我想知道如何在引发变量时给它一个变量 然后在 try except 中处理它时检索该变量 class ExampleException Exception pass 为其构造函数提供一个参数 将其存储为属性 然后
  • 类返回语句不打印任何输出

    我正在学习课程 但遇到了问题return语句 它是语句吗 我希望如此 程序什么也没有打印出来 它只是结束而不做任何事情 class className def createName self name self name name def
  • 从给定的项目列表创建子列表

    我首先要说的是以下问题不是为了家庭作业目的即使因为我几个月前就完成了软件工程师的工作 无论如何 今天我正在工作 一位朋友向我询问了这个奇怪的排序问题 我有一个包含 1000 行的列表 每行代表一个数字 我想创建 10 个子列表 每个子列表都
  • PyObjC + Python 3.0 问题

    默认情况下 Cocoa Python 应用程序使用默认的 Python 运行时版本 2 5 如何配置我的 Xcode 项目以便它使用较新的 Python 3 0 运行时 我尝试用新版本替换项目中包含的Python framework 但它不

随机推荐

  • 无法在内部使用几何管理器网格。已经有由包管理的奴隶

    所以我正在编写一个小型应用程序 但出现以下错误 无法在内部使用几何管理器网格 已经有由包管理的奴隶 import tkinter as tk from tkinter import ttk LARGE FONT Times New Roma
  • jQuery Mobile 中从左到右滑动过渡

    我正在添加发生向左滑动时的页面运行时 但是当向右滑动时 我无法返回我创建的上一页sliding from 左到右 我已经添加了data direction reverse 到页面 但它没有创建从左到右的效果 有什么办法可以做到这一点吗 使用
  • 带逗号的赋值有效吗?

    为什么aaa 1 2 3工作并设置值aaa to 1 为什么不var bbb 1 2 3 work 为什么var bbb 1 2 3 工作并设置值bbb to 3 这里发生了很多事情 但基本上 它归结为逗号运算符 https develop
  • 使用网关 + VirtualService + http01 + SDS

    In the document https istio io docs examples advanced gateways ingress certmgr 有一个关于的例子使用 Cert Manager 保护 Kubernetes Ing
  • Python 文件模式详细信息[重复]

    这个问题在这里已经有答案了 在Python中 以下语句不起作用 f open ftmp rw print gt gt f python 我收到错误 Traceback most recent call last File
  • 如何向 matplotlib 添加垂直线?

    我想在 x 23 30 00 处显示一条垂直线 我也尝试过 x 23 30 有任何想法吗 df1 df1 between time 19 30 23 59 df1 high plot kind line figsize 10 5 plt a
  • 是否可以在不先检出整个存储库的情况下进行稀疏检出?

    我正在使用一个包含大量文件的存储库 需要几个小时才能签出 我正在研究 Git 是否可以很好地与这种存储库配合使用 因为它支持稀疏签出 但我能找到的每个示例都执行以下操作 git clone
  • 获取两条二维线之间的角度。 (相对于线的方向)

    我想获得两条线之间相对于线方向的角度 线的 2 个向量的法线点积始终返回两条线之间的最小角度 这不是我想要的 Example image 蓝线 我有的线红线 指示方向绿线 尝试绘制指示我想要的旋转方向的曲线失败 p0 p3 直线各点的x y
  • 在 jberet 实现下,CDI 无法与 Java EE Batch 一起使用

    我有一个使用部署在 WildFly 应用程序服务器上的 jberet 实现的 Java EE 批处理应用程序 该应用程序还公开 REST api 以按需触发作业 我有以下类创建要注入的 bean public class Factory P
  • 通过 php“exec”挂载时出错

    我正在尝试挂载 iscsi 虚拟磁盘 但是如果我通过 php 中的 exec 函数执行命令 则会出现以下错误 mount special device dev sdf1 does not exist 但如果我直接在控制台中运行命令 它运行得
  • 什么是最好的自动化网站 UI 测试框架 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用自定义装饰器将具有多个常用选项的命令放入一个参数

    我想制作一个模块 使构建共享许多选项的单击命令变得非常简单 这些选项将被提取到传递到命令中的单个对象中 作为说明性示例 from magic import magic command import click magic command C
  • 流畅的nhibernate r1.0流畅映射禁用延迟加载

    如何禁用 fn r1 0 中的延迟加载 Fluently Configure Database SQLiteConfiguration Standard InMemory Mappings m gt m AutoMappings Add A
  • Debian Stretch 和 Jessie 32 位库

    对于那些寻找答案的人来说 它就在那里 因为其他网站上并不清楚 至少英特尔编译器需要这样做 也许它对其他软件也有帮助 只需在终端中运行这些命令即可 sudo dpkg add architecture i386 sudo apt get up
  • 如何在单击按钮时切换背景图像?

    我有这个代码 button1 setOnClickListener new OnClickListener Override public void onClick View v TODO Auto generated method stu
  • 正则表达式删除

    标签之间的回车符

    我一直在试图弄清楚如何删除之间发生的回车符 p 标签 从技术上讲 我需要用空格替换它们 而不是删除它们 这是一个例子 我用过美元符号 作为回车标记 p p Ac nec strong 暂停 dapibus strong Nulla taci
  • 使用带有 ssl 证书的 Node 进行 mac 验证失败

    正如 Node api 文档中所指定的 我尝试使用 openssl 自行创建和签名的证书来尝试第一个 一切都很顺利 除了无法从 Android 测试客户端 因为它需要 ca 证书 当我尝试第二种方法 使用 pfx 而不是使用 key cer
  • Amazon Lex AWS Lambda 挂钩的 Jackson JSON 反序列化

    我在 AWS Lex Lambda 挂钩中实现反序列化时遇到问题 我有一个 AWS Lambda 函数来验证用户输入 但我不断收到 JSONMapping 错误 Lex json 是这样的 currentIntent name intent
  • 为什么 iPhone iOS 显示 momentjs 的无效日期

    我有一个日期选择器 它返回一个始终位于 UTC 时区的时刻对象 我需要在这个日期做一些逻辑 但总是希望它在用户本地时区 所以我做了以下操作 strip submission date of timezone offset let submi
  • PIL:无法保存粘贴有png的jpg

    我正在尝试将 png 粘贴到 jpg 上 这是代码 usr bin env python3 from PIL import Image from PIL import ImageDraw im Image open existing jpg