PNG 诞生在 1995 年,比 JPEG 晚几年。它本身的设计目的是替代 GIF 格式,所以它与 GIF 有更多相似的地方。和 JPEG 不同,PNG 只支持无损压缩,所以它的压缩比是有上限的。相对于 JPEG 和 GIF 来说,它最大的优势在于支持完整的透明通道,PNG 标准也更为清晰和简单,因此有很多公司或个人都有自己的 PNG 编码解码实现。但目前使用最广的还是 PNG 官方发布的 libpng 库。

在 Windows 系统下使用 MinGW 编译 libjpng 和编译 libjpeg-turbo 方法相同,因为 libpng 依赖 zlib,所有只是需要先编译 zlib,再编译 libjpng 即可。

构建要求

  1. libpng源码
    libpng官网下载源码,本例中使用的版本是libpng 1.6.21。
  2. zlib源码
    zlib官网下载源码,本例中使用的版本是zlib 1.2.8。
  3. CMake

    • CMake v2.8.8 或以上版本,安装时勾选“Add CMake to the system PATH …”,或把CMake安装路径手动添加到系统环境变量PATH中。
    • 安装完之后在命令提示符工具中使用“cmake -version”验证是否安装配置成功。
  4. MinGW

    • 如果在Windows系统上构建,推荐使用MinGW-builds或tdm-gcc。它们能够在开始菜单生成一个启动相应编译器的命令提示符链接。
    • 由于本机安装了MinGW,所以就不再需要上面提到的那两个工具了,只需确保“mingw32-make.exe”的安装路径在系统环境变量PATH中即可。
    • 安装完之后在命令提示符工具中使用“mingw32-make -version”验证是否安装配置成功。

构建步骤

打开命令提示符工具cmd,依次输入如下命令:

cd {build_directory}
cmake -G "MinGW Makefiles" {source_directory}
cmake -DZLIB_LIBRARY:FILEPATH="F:\
ThirdParty\zlib128\zlib-1.2.8\build\libzlibstatic.a" -DZLIB_INCLUDE_DIR:PATH="F:
\ThirdParty\zlib128\zlib-1.2.8" -G "MinGW Makefiles" {source_directory}
mingw32-make

其中“{build_directory}”是想要生成构建文件的目录,“{source_directory}”是libpng源码所在的目录。“ZLIB_LIBRARY”指定的是zlib库文件路径名,“ZLIB_INCLUDE_DIR”制定的是zlib头文件所在的路径。

如果想要生成Debug版本的库,只需在cmake命令行添加“-DCMAKE_BUILD_TYPE=Debug”参数即可。如果使用使用的是NMake,则不用使用“-DCMAKE_BUILD_TYPE=Release”参数(NMake默认构建的是Debug版本的库)。

参考链接:
Cmake Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR)

标签: Windows, MinGW, libpng

添加新评论