最快的Linux JPEG缩略图生成器


8

我正在寻找适用于Linux的最快的命令行图像转换器,该转换器可以读取JPEG图像,将其缩放至最大1366x768,并写入高质量的JPEG图像。这样的事情,但是比ImageMagick快得多:

$ convert -resize x768 -quality 50 foo42.jpg foo42.th.jpg
# takes 0m16.713s for my test image set

我也尝试过这个:

$ <foo42.jpg djpeg | pnmscale -xysize 1366 768 | cjpeg -quality 50 >foo42.th.jpg
# takes 0m12.007s for my test image set, and has lower visual quality than ImageMagick

所以我想有一个程序,最好用C编写,该程序集成了djpeg,更高质量的pnmscale版本和cjpeg。

我刚发现swiggle(一个使用libjpeg的C程序),我禁用了其中一些我在源代码中不需要的功能,并且得到了:

$ swiggle -f -H 768 .
# takes 0m11.378s for my test image set, yields high quality results

您还有其他建议吗?我猜大多数图像转换器都使用libjpeg,因此很难获得比than回更快的结果。


1
我猜最快的将使用CUDA或OpenCL(它们使用NVidia或基于AMD的GPU的功能)。我认为OpenCV现在部分使用CUDA。如果您对使用c方便,则可能可以将一些事情
Matt H

我同意马特的观点。如果这些是巨大的图像(如果花费12秒,那么我猜它们还不小),那么CUDA / OpenCL可以完成这项工作。或获得更好的PC。
Shiki

图像不能太大(最大4000x3000)-几十个图像集的转换需要12秒。
pt

Answers:


12

到目前为止,我使用的最快的库肯定是EPEG。它只能从JPG文件创建缩略图,但是创建起来非常快:

$ identify worldmap.jpg
worldmap.jpg JPEG 6400x3200 6400x3200+0+0 DirectClass 8-bit 6.85727mb 0.840u 0:02

ImageMagick的:

$ time convert -resize 1536x768 -quality 50 worldmap.jpg im_thumb.jpg
# 2.93s user 0.23s system 85% cpu 3.718 total

EPEG:

$ time epeg -w 1536 -h 768 -q 50 worldmap.jpg epeg_thumb.jpg
# 0.31s user 0.01s system 79% cpu 0.404 total

我用这个库,为的大量创造大拇指真的高画质图像。


2
github.com/mattes/epeg ...也可以查看此fork。
遮罩了

1
另请参见github.com/fawick/speedtest-resize,以获取各种库的基准测试
nh2,18年

2

我已经通过下载swiggle(命令行JPEG缩略图+ HTML图像库生成器)并修改其源代码来解决此问题,以满足我的需要。请参阅问题中的速度测量(比djpeg + pnmscale + cjpeg快10%以上)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.