Найшвидший генератор мініатюр JPEG для Linux


9

Я шукаю найшвидший конвертер зображень командного рядка для Linux, який може зчитувати зображення JPEG, масштабувати його максимум до 1366x768 та записувати якісне зображення у форматі JPEG 50. Щось подібне, але набагато швидше, ніж 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 (програму на C за допомогою libjpeg), я відключив частину його функціональності, яка мені не потрібна у вихідному коді, і у мене є:

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

У вас є ще одна пропозиція? Я думаю, що більшість конвертерів зображень використовують libjpeg, тому було б важко отримати набагато швидші результати, ніж хитання.


1
Я думаю, що найшвидший використає CUDA або OpenCL (які використовують потужність вашого NVidia або на базі процесора AMD). Я думаю, що OpenCV зараз використовує CUDA частинами. Можливо, вам вдасться щось збити, якщо вам стане в нагоді c
Метт H

Я згоден з Меттом. Якщо це величезні зображення (і якщо це займає 12 секунд, то, мабуть, вони не малі), тоді CUDA / OpenCL зробив би цю роботу. Або отримати кращий ПК.
Apache

Зображення не надто великі (4000x3000 - це максимум) - конверсія займає 12 секунд для набору зображень з кількох десятків зображень.
пт

Відповіді:


13

Найшвидша бібліотека, яку я раніше використовувала, - це, безумовно, 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 ... перевірте також цю виделку.
матовий

1
Дивіться також github.com/fawick/speedtest-resize для еталону різних бібліотек
nh2

2

Я вирішив цю проблему, завантаживши swiggle (JPEG-мініатюру командного рядка + генератор галереї зображень HTML) та змінивши його джерело для моїх потреб. Дивіться вимірювання швидкості у запитанні (менш ніж на 10% швидше, ніж djpeg + pnmscale + cjpeg).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.