Самый быстрый генератор миниатюр JPEG для Linux

10660
pts

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

8
I guess the fastest would make use of CUDA or OpenCL (which use the power of your NVidia or AMD based GPU). I think OpenCV now uses CUDA in parts. You might be able to whip something up if you're handy with c Matt H 13 лет назад 1
Я согласен с Мэттом. Если это огромные изображения (и если это займет 12 секунд, то я думаю, что они не маленькие), то CUDA / OpenCL сделает эту работу. Или лучше ПК. Shiki 13 лет назад 0
Изображения не слишком большие (максимум 4000x3000) - преобразование занимает 12 секунд для набора изображений из нескольких десятков изображений. pts 13 лет назад 0

2 ответа на вопрос

11
Sebastian Stumpf

Самая быстрая библиотека, которую я использовал до сих пор, определенно является 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 

Я использовал эту библиотеку, чтобы создавать большие пальцы для огромного количества действительно больших изображений.

https://github.com/mattes/epeg ... проверьте и этот форк. mattes 9 лет назад 2
Смотрите также https://github.com/fawick/speedtest-resize для сравнения различных библиотек. nh2 6 лет назад 1
2
pts

I've solved this problem by downloading swiggle (a command-line JPEG thumbnail + HTML image gallery generator), and modifying its source for my needs. See the speed measurements in the question (less than 10% faster than djpeg+pnmscale+cjpeg).

Похожие вопросы