third_party_libpng:基于OpenHarmony生态的PNG图像处理库项目

Third-party open-source software libpng | 三方开源软件libpng

分支299Tags64
文件最后提交记录最后更新时间
5 年前
5 天前
1 年前
2 年前
17 天前
2 年前
17 天前
17 天前
17 天前
1 年前
17 天前
17 天前
17 天前
1 年前
2 年前
17 天前
2 年前
2 天前
6 年前
2 年前
5 年前

libpng 1.6.55 版本 README

请参阅 png.h 顶部附近关于版本号的说明。 安装说明请参见 INSTALL 文件。

Libpng 有多种分发格式。如果需要文本文件采用 UNIX 风格的行尾符,请获取 libpng-*.tar.gzlibpng-*.tar.xz;如果需要 DOS 风格的行尾符,则获取 lpng*.7zlpng*.zip

有关 libpng 的详细使用说明,请阅读 libpng-manual.txt。 程序中 libpng 的使用示例,请参见 example.cpngtest.c。 libpng 的使用信息及限制(内容很少),请参见 png.h。 有关 zlib(libpng 所使用的压缩库)的使用说明及其限制,请参见 zlib.h

运行本程序应使用 zlib 1.0.4 或更高版本,但它也可能在 zlib 0.95 等旧版本上运行。即便如此,旧版本的 zlib 中存在一些 bug,可能导致某些图像输出无效的压缩流。

您还应注意,zlib 是一个压缩库,其用途不仅限于 PNG 文件。如果您愿意,可以将 zlib 用作 fread()fwrite() 的直接替代品。

zlib 应该可以在获取 libpng 的同一位置找到,或者访问 https://zlib.net

您可能还需要一份 PNG 规范。它有 RFC、W3C 推荐标准和 ISO/IEC 标准等多种形式。您可以在 http://www.libpng.org/pub/png/pngdocs.html 找到这些文件。

此代码目前存档于 https://libpng.sourceforge.io 的下载区域,以及 http://libpng.download/src

本版本在很大程度上基于 Glenn、Guy 和 Andreas 早期的工作,由我和 PNG 开发小组创建并提供支持。

请将意见、更正和建议发送至 png-mng-implement@lists.sourceforge.net。(需要订阅;请访问 https://lists.sourceforge.net/lists/listinfo/png-mng-implement 进行订阅。)

有关 PNG 规范的一般问题,请发送至 png-mng-misc@lists.sourceforge.net。(需要订阅;请访问 https://lists.sourceforge.net/lists/listinfo/png-mng-misc 进行订阅。)

历史说明

自1995年年中以来,libpng库已得到广泛使用和测试。 一年后发布的0.89版本是首个正式版本。 到1997年底,该库终于进入了API在一段时间内没有重大变化的阶段,而且人们对版本低于1.0的库普遍存在顾虑。1.0.0版本于1998年3月发布。

请注意,如果您使用共享库,png_info结构的某些更改会导致此版本的库与libpng-0.89或更早版本在二进制层面不兼容。png_set_filler()函数的filler参数类型已从png_byte更改为png_uint_32,这将影响使用此函数的共享库应用程序。

为避免因info_struct内部结构变化而产生问题,0.95版本中提供了新的API,以避免应用程序直接访问info_ptr。这些函数即png_set_<chunk>png_get_<chunk>函数。在访问/存储info_struct数据时,应使用这些函数,而不是直接操作它,以避免未来出现此类问题。

需要重点注意的是,在libpng-1.2.x版本系列中,这些API并未导致那些直接访问info结构的现有程序与新版本库不兼容。在旨在作为过渡版本的libpng-1.4.x中,仍然可以访问png_structinfo_struct的成员,但编译器会发出关于已弃用用法的警告。从libpng-1.5.0开始,不允许直接访问这些结构,并且结构的定义位于应用程序无法访问的私有头文件pngstruct.hpnginfo.h中。强烈建议新程序使用新的API(如example.cpngtest.c中所示),并将旧程序转换为新格式,以便于未来的升级。

自0.89版本以来的新增功能包括:能够从已由调用应用程序读取了部分(或全部)签名字节的PNG流中读取数据。这也允许读取不包含PNG文件签名的嵌入式PNG流。此外,现在可以设置库在检测到块CRC错误时的操作。可以根据CRC错误发生在关键块还是辅助块来设置不同的操作。

自0.90版本以来的新增功能包括:能够将libpng编译为Windows DLL,以及用于访问info_struct中数据的新API。实验性函数包括:为行过滤器选择设置权重和成本因素的能力、在支持未对齐数据访问的大端处理器上直接从缓冲区读取整数的能力、更快的alpha合成方法以及更精确的16位到8位颜色转换。其中一些实验性函数,如加权过滤器启发式,后来已被移除。

本发行版包含的文件

ANNOUNCE => 本版本的发布说明,包含近期变更 AUTHORS => 贡献作者列表 CHANGES => libpng 各版本间的变更说明 INSTALL => libpng 安装说明 LICENSE => libpng 的使用和再分发许可协议 README => 本文件 TODO => 当前库中尚未实现的功能 TRADEMARK => 商标信息 example.c => 使用 libpng 函数的示例代码 libpng.3 => libpng 的手册页(包含 libpng-manual.txt) libpng-manual.txt => libpng 及其函数的说明文档 libpngpf.3 => libpng 私有函数的手册页(已弃用) png.5 => PNG 格式的手册页 png.c => 库通用的基本接口函数 png.h => 库函数和接口声明(公共) pngpriv.h => 库函数和接口声明(私有) pngconf.h => 系统特定的库配置(公共) pngstruct.h => png_struct 声明(私有) pnginfo.h => png_info 结构体声明(私有) pngdebug.h => 调试宏(私有) pngerror.c => 错误/警告消息 I/O 函数 pngget.c => 从结构体中检索信息的函数 pngmem.c => 内存处理函数 pngbar.png => PNG 标志,88x31 pngnow.png => PNG 标志,98x31 pngpread.c => 渐进式读取函数 pngread.c => 读取数据/辅助高级函数 pngrio.c => 最低级别的数据读取 I/O 函数 pngrtran.c => 读取数据转换函数 pngrutil.c => 读取数据实用函数 pngset.c => 将数据存储到 info_struct 中的函数 pngtest.c => 库测试程序 pngtest.png => 库测试样本图像 pngtrans.c => 通用数据转换函数 pngwio.c => 最低级别的写入 I/O 函数 pngwrite.c => 高级写入函数 pngwtran.c => 写入数据转换 pngwutil.c => 写入实用函数 arm/ => ARM Neon 优化代码 intel/ => INTEL SSE2 优化代码 loongarch/ => LoongArch LSX 优化代码 mips/ => MIPS MSA 和 MIPS MMI 优化代码 powerpc/ => PowerPC VSX 优化代码 riscv/ => RISC-V 平台优化代码 ci/ => 持续集成脚本 contrib/ => 外部贡献 arm-neon/ => ARM-NEON 平台优化代码 mips-msa/ => MIPS-MSA 平台优化代码 powerpc-vsx/ => POWERPC-VSX 平台优化代码 examples/ => libpng 使用示例 gregbook/ => PNG 读写源代码,来自 Greg Roelofs 所著《PNG: The Definitive Guide》,O'Reilly,1999 年 libtests/ => 测试程序 pngexif/ => 用于检查 PNG 文件中 EXIF 信息的程序 pngminim/ => 最小化解码器、编码器和渐进式解码器程序,演示 pngusr.dfa 的使用 pngminus/ => 简单的 pnm2png 和 png2pnm 程序 pngsuite/ => 测试图像 riscv-rvv/ => RISC-V Vector 平台优化代码 testpngs/ => 测试图像 tools/ => 各种工具 visupng/ => VisualPng,一个 Windows 平台的 PNG 图像查看器 projects/ => 适用于各种 IDE 的项目文件和工作区 owatcom/ => OpenWatcom 项目 visualc71/ => Microsoft Visual C++ 7.1 工作区 vstudio/ => Microsoft Visual Studio 工作区 scripts/ => 用于构建 libpng 的脚本和 makefile(完整列表参见 scripts/README.txt) tests/ => 测试脚本

祝您使用顺利,编程愉快!

  • Cosmin Truta(现任维护者,自 2018 年起)
  • Glenn Randers-Pehrson(前任维护者,1998-2018 年)
  • Andreas Eric Dilger(前任维护者,1996-1997 年)
  • Guy Eric Schalnat(原始作者及前任维护者,1995-1996 年) (原 Group 42, Inc. 成员)

项目介绍

Third-party open-source software libpng | 三方开源软件libpng

定制我的领域