Title Loading...
- Time Loading...
- Wordcount Loading...
Catalogue
记一次Windows下编译mozjpeg的经历
说来话长,一切都要从博客建立的那天说起。
由于博客的主机空间、带宽太小,而我又不想使用第三方的图片存储,便只好最大限度地节省主机的空间了。而最占空间的是图片,若是能减小图片所占空间,那么这个小的可怜的主机应该还能撑很长一段时间。最先想到的是谷歌的新图片格式Webp
,体积确实够小,若是Safari也支持便是完美的选择,目前只好搁置一旁。然后是在线图片压缩服务,先后用了TinyPNG
和谷歌的Squoosh
,效果都很好,特别是TingPNG还提供API,虽然每个账号每月只有500张的免费额度。随后了解到,两者都是基于开源的图像压缩工具,那我完全可以用Python写一个脚本调用这些工具。这些工具中最出名的便是Pngquant
,和本文的主角:Mozjpeg
。
Pngquant 的主页上有编译好的可执行文件,而Mozjpeg则只有源码。谷歌和百度上找遍了都没有他人编译好的.exe
文件。因此只好自己编译了。下面开始编译。
一、准备编译环境
根据Mozjpeg主页上的构建指南,Windows需要安装以下工具:
- CMake
- NASM
- [MinGW](http://sourceforge.net/projects/mingw-w64/files/Toolchains targetting Win32/Personal Builds/mingw-builds/installer/mingw-w64-install.exe/download)
- Github for Windows(可选)
将以上工具安装完成,将Mozjpeg的源码拉取到本地,便可以进行下一步,Cmake的配置。
二、Cmake的配置
官方指南上的步骤是纯CLI下的,我照着步骤尝试,却总是遇到环境变量的问题。便想着试一下Cmake GUI。
打开Cmake GUI,如下图所示,第一行是指定源码路径,第二行是指定Build文件夹的位置(需要手动在源码目录创建)。
接着点击 Configure,选择MinGW Makefiles,点击Finish。
执行完毕后,手动指定NASM的路径。
最后点击Generate,等待程序执行完毕,Cmake的配置到此结束。
三、编译
终于到了最激动人心的一步。让我们打开命令提示符,进入源码所在目录,输入以下指令:
cmake --build ./Build --config release
点击回车,然后挂起电脑听一首歌,Mozjpeg便编译好了。
然而,编译到31%的时候,编译中断,屏幕抛出一个错误:
提示在jmemmgr.c文件中缺少SIZE MAX
的定义。因此我们打开jmemmgr文件,在其头部加入以下代码:
#if ! defined SIZE_MAX
#define SIZE_MAX (4294967295U)
#endif
意思就是没有定义SIZE_MAX
的时候,定义SIZE_MAX
为4294967295U
。
然后清空build文件夹,从头执行编译过程。
编译成功。