Самый быстрый генератор эскизов 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, поэтому было бы трудно получить намного более быстрые результаты, чем мошенничество.

PTS
источник
1
Я предполагаю, что самые быстрые будут использовать CUDA или OpenCL (которые используют всю мощь вашего NVidia или AMD на основе GPU). Я думаю, что OpenCV теперь использует CUDA по частям. Возможно, вам удастся что-то поднять, если вам пригодится c
Matt 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 ... проверьте эту вилку тоже.
mattes
1
См. Также github.com/fawick/speedtest-resize для
ознакомления с тестом
2

Я решил эту проблему, загрузив swiggle (миниатюру JPEG командной строки + генератор галереи изображений HTML) и изменив его источник для своих нужд. См измерения скорости в вопросе (менее чем на 10% быстрее, чем djpeg + pnmscale + cjpeg).

PTS
источник