我正在寻找适用于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