web-dev-qa-db-fra.com

Générateur de vignettes JPEG la plus rapide pour Linux

Je cherche le convertisseur d'images de ligne de commande la plus rapide de la ligne de commande pour Linux, qui peut lire une image JPEG, ce qui augmente jusqu'au plus 1366x768 et écrire une image de qualité 50 JPEG. Quelque chose comme ça, mais beaucoup plus rapide que l'imagemagick:

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

J'ai aussi essayé ceci:

$ <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

J'aimerais donc avoir un programme, de préférence écrit en C, qui intègre DJPEG, une version de qualité supérieure de PNMSCALE et CJPEG.

Je viens de trouver Swiggle (un programme C à l'aide de libjpeg), j'ai désactivé certaines de ses fonctionnalités, je n'ai pas besoin dans le code source et j'ai:

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

Avez-vous une autre suggestion? Je suppose que la plupart des convertisseurs d'images utilisent libjpeg, il serait donc difficile d'obtenir des résultats beaucoup plus rapides que de sonner.

9
pts

La bibliothèque la plus rapide que j'ai utilisée jusqu'à présent est définitivement EPEG . Il ne peut créer que des pouces de fichiers JPG, mais cela les crée très vite:

$ 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

J'ai utilisé cette bibliothèque pour créer des pouces pour une vaste quantité de vraiment grandes images.

13
Sebastian Stumpf