用于保存和加载 PNG 图像的纯 Python 库
项目描述
PyPNG 的自述文件
介绍
Python的PNG模块。PyPNG 完全用 Python 编写。
- PyPNG 主页:https ://gitlab.com/drj11/pypng/
- PyPNG 文档:https ://pypng.readthedocs.io/en/latest/
- PyPNG 邮件列表:https ://groups.google.com/forum/#!forum/pypng-users
快速开始
import png
png.from_array([[255, 0, 0, 255],
[0, 255, 255, 0]], 'L').save("small_smiley.png")
之后,import png
然后尝试help(png)
。此外,可舔的 HTML 文档出现在html/
目录中。如果 HTML 不好,那么您可以尝试man/
目录中的 ReST 源。
安装
PyPNG 是纯 Python 并且没有依赖项。它需要 Python 3.5 或任何兼容的更高版本。
要通过 pip 安装 PyPNG 包,请使用:
python -m pip install git+https://gitlab.com/drj11/pypng@pypng-0.20220715.0
安装后使用
`import png`
访问png
Python 程序中的模块。
您也可以使用setuptools
. PyPNG 使用setup.cfg
andpyproject.toml
来记录它的配置。
使用合适的版本从(版本控制的)源安装pip
:
cd
进入目录并执行命令:
python -m pip install .
PyPNG 非常简单,您不需要安装工具。你可以复制code/png.py
到任何你喜欢的地方。它旨在让您可以复制png.py
到您的应用程序中并分发它。以下curl
命令应将最新版本复制到当前目录:
curl -LO https://gitlab.com/drj11/pypng/-/raw/main/code/png.py
发行说明
(有关问题,请参阅https://gitlab.com/drj11/pypng/-/issues/)
发布(下一个)
发布 0.20220715.0
开发转移到 gitlab:https ://gitlab.com/drj11/pypng
如果你将一个空文件传递给 PyPNG,它现在会引发内置的 Python 异常EOFError
。这应该可以更容易地将空文件问题与真正的格式错误(使用png.FormatError
)分开诊断。这是对 API 的轻微破坏性更改。
prirowpng
从左到右连续加入 PNG 图像的新工具(旧的内部pipcat
工具)。
pricolpng
将 PNG 图像从上到下连接到列中的新工具。
支持添加到pripamtopng
.
priplan9topng
从 Plan 9 图像格式转换为 PNG 的新工具。实际上,这已经在代码库中潜伏多年,但最近已转换为 Python 3。作者只有有限的 Plan 9 图像集合,这限制了可以进行的测试。作者欢迎计划 9 图像的错误报告。
该priplan9topng
工具有一个更具实验性的选项
--font
,可将 Plan 9 子字体文件转换为 PNG 文件序列。
发布 0.0.21
放弃对 Python 2 的支持。支持 Python 3.5 及更高版本。修改了一些辅助工具以在 Python 3 上工作。
通过轮文件安装。
prichunkpng
命令行工具现在有一些添加块的新选项:
--iccprofile
添加一个iCCP
块(ICC配置文件);--physical
添加一个pHYs
块,指定预期的像素大小;--sigbit
添加一个sBIT
块,指定编码的有效位;--transparent
添加一个tRNS
块,指定透明颜色。
priditherpng
命令行工具标准化并转换为 Python 3。
pripngtopam
该工具现在可以--plain
选择输出纯 PGM 和 PPM 格式。名称的topam
一部分有点用词不当:如果可能(L 和 RGB PNG 文件),该工具将输出 PGM(灰色)或 PPM(RGB)文件。基本上所有可以处理 PAM 文件的工具也可以处理 PGM 或 PPM 文件。PAM 文件不能是普通文件,因此在写入真正的 PAM 文件的情况下,使用该选项会引发错误。
当您写入错误的行数时,会出现更好的错误消息。
(稍微实验性地)将png
模块作为命令行工具运行,使用python -m png
, 将报告png
模块的版本和文件位置。
发布 0.0.20
放弃了对早期版本的 Python 的支持。支持 Python 3.4 及更高版本。Python 2.7 也可以工作,但这是支持任何版本的 Python 2 的最后一个版本。
Cython 代码被移除,这简化了实现。
删除了(可选)依赖项setuptools
。
将默认值更改为png.Writer
灰度。
从 中删除 3D 支持.from_array()
。
发布 0.0.19
为了简化代码,放弃了对早期版本的 Python 的支持。从 Python 3.x 系列开始,支持从 3.2 开始的所有版本。从 2.x 系列开始,仅支持 Python 2.6 和 2.7。
代码已清理。测试重命名,更有条理。通常符合 Flake 8 标准。减少古代 Python 版本的特殊情况。
写入 PNG 文件时会检查行长度。以前可以通过传入错误长度的行来编写格式错误的 PNG 文件。
pHYS
现在处理块。
该Writer()
接口现在支持每个通道具有不同位深度的源像素。要利用这一点,请为 bitdepth 参数传入一个元组。
辅助工具规范化和简化。
pripamtopng
命令行工具将 NetPBM PNM/PAM 文件转换为 PNG。以前png.py
是这样做的。请注意,只有一个输入文件被转换,如果您在单独的文件中具有强度和不透明度,您有两种选择:要么使用pamstack
将它们转换为单个 PAM 文件并进行转换,要么将每个文件转换为 PNG,然后用于priweavepng
编织它们一起。两者都会起作用。
pripngtopam
命令行工具将 PNG 转换为 NetPBM PNM/PAM 文件。以前png.py
是这样做的。
python -m pngsuite
现在是一个命令行工具,用于从 PNG 测试图像套件中写入各种图像。以前可以使用gen
.
priweavepng
命令行工具跨多个图像执行通道提取。这是一个更通用的版本pipstack
(已被删除),灵感pamstack
来自 NetPBM。
许多以前工具上可用的--interlace
选项现在仅在 上可用priweavepng
,使其成为生成隔行扫描 PNG 的首选工具。
prichunkpng
命令行工具添加和删除块,并且“智能地”知道透明、伽玛、背景块。它是添加这些块的首选工具,以前可以使用其他工具的各种选项来实现。
gen
已重命名为priforgepng
.
priforgepng
使用中心像素采样,这意味着 256 像素宽的 8 位梯度采用所有可能的 256 个值。它还改善了非常小的图像的输出。
priforgepng
用于Fraction
内部数学意味着条纹图案是准确的并且没有松散的像素。
priforgepng
仅输出灰度 PNG 文件(但请参阅下一项以了解生成彩色 PNG 的功能)。
priforgepng
可以将多个 PNG 输出到同一个流上。priweavepng
这与从标准输入接受多个 PNG的特性非常吻合。LA、RGB 和 RGBA 测试图像可以通过管道priforgepng
生成priweavepng
:
priforgepng RTL RTR RBR | priweavepng - - -
将生成一个 RGB PNG。
发布 0.0.18
感谢github.com/sean-duffy
,
.from_array()
现在可以采用 3D 数组。
在 Python 3 中无法转换为 PNM;现在已解决。第 26 期:https ://gitlab.com/drj11/pypng/-/issues/26
发布 0.0.17
在 Python 3 和 Windows 上运行时的各种修复。github.com/ironfroggy
合并来自和
的拉取请求github.com/techtonik
,并手动合并来自 的提交github.com/Scondo
。
发布 0.0.16
与鼻子兼容:nosetests png.py
现在可以使用。
允许任何“类文件”对象作为输入。
处理texttopng
.
发布 0.0.15
修复了各种 URL 以指向 github.com 而不是 googlecode。
发布 0.0.14
当png.py
用作命令行工具时,它现在可以生成非方形测试图像。
PyPNG 现在在 Python 3 上以普通安装方式“开箱即用”安装(以前distribute
或pip
需要)。
PyPNG 欢迎以下社区贡献:
当 Cython 可用时,Joaquín Cuenca Abela 加快了 PNG 的读取速度。
Josh Bleecher Snyder 添加了一种宽松模式,该模式具有轻松的校验和检查。
nathan@dunfield.info修复了在 Windows 上使用命令行工具时写入文件的问题(问题 62)。
已修复以下问题:
在github上:
问题 6:调色板处理很烦人
在谷歌代码上:
问题 62:在 Windows 上写入 PNG 文件时出现问题
开发已从 googlecode 转移到 github。下面的所有问题,以及紧接在上面的问题,都来自 googlecode 问题跟踪器。所有较新的问题都应该在 github 上。
发布 0.0.13
PyPNG 现在可以在 Python 3 上“开箱即用”地安装。感谢simon.sapin@kozea.fr和nathan@dunfield.info提供的补丁。
已修复以下问题:
问题 63:setup.py 不使用 2to3 问题 64:文档中的错字
发布 0.0.12
2to3
如果您使用该工具,PyPNG 现在可以在 Python 3 上运行。修复了将灰度图像转换为 RGBA 的问题。
已修复以下问题:
问题 60:灰度图像未正确转换为 RGBA 问题 61:不适用于 Python 3
发布 0.0.11
在文档中添加了“PyPNG 有多快”部分。对其进行了更改,以便更多 PNG 格式将其行作为 Pythonarray.array
实例返回。
发布 0.0.10
修复 read_flat 方法(已损坏多年)。
已修复以下问题:
问题 56:read_flat 损坏
发布 0.0.9
暂定修复 64 位 Python 2.5 系统上的弃用警告。Plan 9 图像的转换工具。
第 54 期(下)是暂定的。PyPNG 开发人员无法重现该错误(因为它似乎在 64 位 Python 2.5 系统上);任何用户报告都将受到欢迎。
已修复以下问题:
问题 54:使用 pypng 时的弃用警告。问题 55:无法转换 Plan 9 图像。
发布 0.0.8
由于使用brokensuite
. 一个已修复的错误非常严重:至少一个输入的无限循环(下面的问题 52)。
已修复以下问题:
问题 47:使用 write_packed 时的前导空格。问题 48:当输入没有 gamma 块时 pipdither 失败。问题 49:pipdither 因 1 位输入而失败。问题 50:pipchunk 添加第二个 gamma 块。问题 51:piprgb 和 pipasgrey 对彩色映射图像失败。问题 52:某些输入导致无限循环。
发布 0.0.7
html/ex.html
用于 NumPy 集成的更好的文档(主要是)。
已修复以下问题:
问题 46:不清楚如何将 PNG 像素数据输入和输出 NumPy。
发布 0.0.6
NumPy 整数类型现在可以工作了。
已修复以下问题:
问题 44:不能将 numpy.uint16 用于像素值。
发布 0.0.5
sBIT
现在处理块,这意味着 PyPNG 可以从端到端处理从 1 到 16 的任何(单个)位深度。
已修复以下问题:
问题 28:不添加 sBIT 块。问题 36:存在时忽略 sBIT 块。
发布 0.0.4
PyPNG 现在可以在 Python 2.2 上运行(对于 Symbian 用户来说意义重大,因为 PyS60 基于 Python 2.2)。Python 2.2 并非支持所有功能。
已修复以下问题:
问题 16:Source 和 doc 在应该使用 'L' 的地方使用 'K'。问题 32:不接受打包数据。问题 33:无法创建具有透明度的灰度 PNG。问题 35:不适用于 Python 2.2。
发布 0.0.3
处理 PAM 文件允许在涉及 Netpbm 格式和 PNG 的工作流中端到端处理 alpha 通道。PyPNG 现在可以在 Python 2.3 中使用。
已修复以下问题:
问题 14:不读取 PAM 文件。问题 15:不写入 PAM 文件。问题 25:tRNS 块的错误处理。问题 26:asRGBA8 方法对于颜色类型 2 图像崩溃。问题 27:在 Python 2.3 上失败。
发布 0.0.2
现在提供了可舔的 HTML 文档(参见 html/ 目录),由 Sphinx 生成。
已修复以下问题:
问题 8:文档不可舔。问题 9:相对于 PIL 的优势尚不清楚。问题 19:具有不受支持的 maxval 的 PNM 输入的虚假消息 问题 20:无法写入大型 PNG 文件
发布 0.0.1
事情发生了。
显现
- .../ - 顶级 crud(比如这个 README 和 setup.py)。
- .../asset - 资产(测试所需)
- .../code/ - Python 代码。
- .../man/ - 手册(源代码/纯文本)。
- .../proc/ - 记录的程序(发布程序)。
参考
结尾
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。