Dropbox 制作的无损 jpeg 压缩工具 Lepton 可以保留多少可用空间?
你好。
我是Mandai,负责Wild 开发团队。
我尝试了各种方法来看看使用 lepton(Dropbox 开发的 JPEG 文件无损压缩工具)实际上可以压缩多少图像大小。
这次使用的操作系统是CentOS7,在VirtualBox上创建。
请参阅下面的捕获,了解 Windows 系统信息和 VirtualBox 分配。
如果您想创建同样的环境并轻松尝试一下,本文搭建虚拟环境。
由于选择了编译环境,请注意,在CentOS 6或更低版本上很有可能无法正常编译。
(实际上,我无法在 CentOS 6.7 VM 上编译它,尽管我尝试了各种方法。)
安装轻子
安装轻子非常容易。
按照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
用多核制作要快得多,所以制作时最好加上“-j”选项。
上述命令是在具有4核CPU的PC上执行的。
CPU 核心的数量可以使用 nproc 命令获取,因此您也可以执行类似“make -j$(nproc)”的操作(这太疯狂了!)。
可以减少多少?
现在,是期待已久的转换时间了。
我们先煮这个吧
文件大小为 5816548 字节。刚刚超过 5MB。作为 JPEG 图像,我认为它相当大。
将其转换为轻子格式的命令如下。
time lepton IMGP2319.JPGcompressed.lep lepton v1.0-1.2.1-35-ge230990 解压缩此文件需要 14816784 字节 4349164 5816548 74.77% 解压缩此文件需要 15946404 字节 4349164 5816548 74.7 7% real 0 m1.102s用户0m2。 676s 系统 0m0.053s
我只添加了 time 命令,因为我想知道执行时间,所以最初只需“lepton IMGP2319.JPGcompressed.lep”就足够了。
结果是它被压缩到了大小的74.77%。
ls的结果如下。
ls -al -rw-rw-r--.1 流浪者 流浪者 5816548 十月 11 日 09:33 IMGP2319.JPG -rw-------.1 流浪者 流浪者 4349164 十月 11 日 09:49 压缩.lep
我认为它已被处理,没有任何问题。
现在,让我们回到最初。
time leptoncompressed.lep decompressed.jpg lepton v1.0-1.2.1-35-ge230990 解压缩此文件需要 15946404 字节 4349164 5816548 74.77% real 0m0.370s user 0m1.235s sys 0m0.022s ls -al -rw-rw -r--.1 流浪者 5816548 10 月 11 日 09:33 IMGP2319.JPG -rw-------.1 流浪者 4349164 10 月 11 日 09:52 压缩.lep -rw------- 1 vagrant vagrant 5816548 十月 11 09:54 解压.jpg
原图为IMGP2319.JPG,转换为lepton格式后,重新转换为jpeg的结果为“解压后的.jpg”。
文件大小相同,即使进行比较,文件也完全相同。
但是,当权限发生变化时要小心。
尝试转换大量图像(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 已在 Dropbox 中使用,并且似乎正在产生成果。
如果您对 jpeg 图像的文件大小有疑问,请借此机会尝试一下。
就是这样。