Dropbox 制作的无损 jpeg 压缩工具 Lepton 可以保留多少可用空间?

你好。
我是Mandai,负责Wild 开发团队。

我使用 Dropbox 开发的 JPEG 文件无损压缩工具 lepton 进行了各种尝试,看看图像大小究竟可以压缩多少。


本次使用的操作系统是 CentOS 7,运行在 VirtualBox 虚拟机上。
请查看下方截图,了解 VirtualBox 虚拟机上的 Windows 系统信息和资源分配情况。

2016-10-13_11h57_48

2016-10-13_11h55_53

2016-10-13_11h55_59

如果您想创建相同的环境并轻松进行尝试,本文创建虚拟环境。

这是一个特定于编译环境的程序,因此请注意,它可能无法在 CentOS 6 或更低版本上正确编译。
(事实上,尽管我尝试了各种方法,但仍然无法在 CentOS 6.7 虚拟机上编译它。)

 

安装轻子

安装轻子非常容易。

如 GitHub 上所述,运行自带的 autogen.sh 脚本下载构建所需的依赖模块,然后使用 autoreconf 创建构建环境。
如果 autogen.sh 运行失败,请尝试使用 yum 安装 automake 和 autoconf。

git clone https://github.com/dropbox/lepton.git sh autogen.sh ./configure make -j4 sudo make install


 在多核电脑上运行 make 命令速度更快,因此最好在执行 make 命令时添加“-j”选项。
上述命令是在一台配备四核 CPU 的电脑上运行的。

可以使用 nproc 命令获取 CPU 核心数,因此可以执行类似“make -j$(nproc)”这样的操作(真是不可思议!)。

 

可以实现多少减排?

现在到了期待已久的转换时间了。

我们先来做这道菜吧

文件大小为 5,816,548 字节,也就是略大于 5 MB。对于 JPEG 图像来说,我认为这相当大了。

将其转换为轻子格式的命令如下:

时间 lepton IMGP2319.JPG compressed.lep lepton v1.0-1.2.1-35-ge230990 解压缩此文件需要 14816784 字节 4349164 5816548 74.77% 解压缩此文件需要 15946404 字节 4349164 5816548 74.77% 实际耗时 0 分 1.102 秒 用户耗时 0 分 2.676 秒 系统耗时 0 分 0.053 秒


 添加 time 命令只是为了知道执行时间,实际上只需执行“lepton IMGP2319.JPG compressed.lep”命令就足够了。
结果显示文件被压缩到原大小的 74.77%。

ls 命令的输出如下:

ls -al -rw-rw-r--. 1 vagrant vagrant 5816548 10月 11 09:33 IMGP2319.JPG -rw-------. 1 vagrant vagrant 4349164 10月 11 09:49 compressed.lep

 
我认为这件事总体上处理得很顺利。

现在,让我们把它恢复到最初的样子。

时间 lepton compressed.lep decompressed.jpg lepton v1.0-1.2.1-35-ge230990 解压缩此文件需要 15946404 字节 4349164 5816548 74.77% 实际耗时 0 分 0.370 秒 用户耗时 0 分 1.235 秒 系统耗时 0 分 0.022 秒 ls -al -rw-rw-r--. 1 vagrant vagrant 5816548 10 月 11 日 09:33 IMGP2319.JPG -rw-------. 1 vagrant vagrant 4349164 10 月 11 日 09:52 compressed.lep -rw-------. 1 vagrant vagrant 5816548 10 月 11 日 09:54 decompressed.jpg

 
原始图像为 IMGP2319.JPG,将其转换为 lepton 格式后,再将其转换为 jpeg 格式,结果为“decompressed.jpg”。

文件大小相同,即使运行 diff 比较,结果也显示是同一个文件。

但是请注意,权限已发生变更。

 

转换大量图像(jpeg → lep 格式)

我们转换了大量图像,以研究平均可以减少多少文件大小。

首先,将 jpeg 格式转换为 lep 格式。

Lepton 处理了 159 个文件,总大小为 807MB。
转换这些文件总共耗时 569.686 秒,平均耗时 3.582931 秒。

文件总大小为 826,028 字节,JPEG 文件被转换为 627,912 字节的 LEP 格式。
平均压缩率为 23.98%,与官方公布的 22% 的压缩率相符,因此结果符合预期。压缩
率最高的文件达到了 29.58%,而
压缩率最低的文件则为
21.23%。中位数为 23.82%,所以平均而言,压缩率超过了 22%(对吧?)。

顺便说一下,CPU负载似乎分布在每个核心上,所以没有出现只有一个CPU被高度利用的情况。

 

转换大量图像(lep 格式 → jpeg)

接下来,尝试将 lep 格式转换为 jpeg 格式。

让我们把刚刚转换的 lep 格式文件转换回 jpeg 格式。
转换总共耗时 232.158 秒,平均耗时 1.460113 秒。

同样,具体时间因文件而异,有些文件耗时长达 1.992 秒,而有些文件
仅需 1.246 秒。
执行时间的中位数为 1.436 秒。

 

结论

如果您使用的服务存储大量 JPEG 图片,在将其保存到 AWS S3 等服务时进行格式转换可以节省成本。
但是,压缩和解压缩所需的机器性能不容忽视。
转换所需时间很大程度上取决于 CPU 性能和内存使用情况,因此您需要根据机器配置进行调整。
您可以通过设置选项来控制内存、进程和线程。

然而,一个不容忽视的特性是,它似乎可以通过 Unix 域套接字或指定监听端口来启动并检索文件。它似乎还可以用于
搭建独立的 lepton 转换服务器并进行文件转换,因此,根据您的想法,这可能是一个不错的选择。

Lepton 已经在 Dropbox 中投入实际应用,并且取得了成功。
如果您正苦于 JPEG 图片的文件大小问题,不妨试试 Lepton 吧!

 
就是这样。

Dropbox 和 Dropbox 标志是 Dropbox, Inc. 的商标。
如果您觉得这篇文章有帮助,请点赞!
0
加载中...
0 票,平均:0.00 / 10
996
X Facebook 哈特纳书签 口袋

写这篇文章的人

关于作者

万代洋一

我的主要工作是为社交游戏开发 Web API,但我也很幸运能够做很多其他工作,包括营销。
此外,我在 Beyond 中的肖像权被视为 CC0。