Schnellster JPEG-Thumbnail-Generator für Linux

10742
pts

Ich bin auf der Suche nach dem schnellsten Befehlszeilen-Bildkonverter für Linux, der ein JPEG-Bild lesen, auf höchstens 1366 x 768 skalieren und ein hochwertiges 50-JPEG-Bild schreiben kann. So etwas, aber viel schneller als ImageMagick:

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

Ich habe auch folgendes versucht:

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

Daher hätte ich gerne ein Programm, vorzugsweise in C geschrieben, das djpeg, eine hochwertigere Version von pnmscale und cjpeg integriert.

Ich habe gerade swiggle (ein C-Programm, das libjpeg verwendet) gefunden, einige Funktionen deaktiviert, die ich im Quellcode nicht benötige, und ich habe:

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

Hast du noch einen Vorschlag? Ich schätze, die meisten Bildkonverter verwenden libjpeg, daher ist es schwierig, viel schnellere Ergebnisse zu erzielen als swiggle.

8
Ich denke, der Schnellste würde CUDA oder OpenCL verwenden (die die Leistung Ihrer NVidia- oder AMD-basierten GPU nutzen). Ich denke, OpenCV verwendet jetzt CUDA in Teilen. Möglicherweise können Sie etwas aufpeppen, wenn Sie mit c vertraut sind Matt H vor 13 Jahren 1
Ich stimme Matt zu. Wenn es sich um riesige Bilder handelt (und wenn es 12 Sekunden dauert, dann sind sie vermutlich nicht klein), dann würde CUDA / OpenCL die Arbeit erledigen. Oder hol dir einen besseren PC. Shiki vor 13 Jahren 0
Die Bilder sind nicht zu groß (4000x3000 ist das Maximum). Die Konvertierung dauert 12 Sekunden für einen Bildsatz von mehreren Dutzend Bildern. pts vor 13 Jahren 0

2 Antworten auf die Frage

11
Sebastian Stumpf

Die schnellste Bibliothek, die ich bisher verwendet habe, ist definitiv EPEG . Es kann nur Thumbnails aus JPG-Dateien erstellen, erstellt sie jedoch sehr schnell:

$ 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 

Ich habe diese Bibliothek verwendet, um Daumen für eine große Anzahl wirklich großer Bilder zu erstellen .

https://github.com/mattes/epeg ... sieh dir auch diese Gabel an. mattes vor 10 Jahren 2
Siehe auch https://github.com/fawick/speedtest-resize für einen Benchmark verschiedener Bibliotheken nh2 vor 6 Jahren 1
2
pts

Ich habe dieses Problem gelöst, indem Sie swiggle (ein Befehlszeilen-JPEG-Thumbnail + HTML-Bildergalerie-Generator) heruntergeladen und die Quelle für meine Bedürfnisse geändert haben . Sehen Sie sich die Geschwindigkeitsmessungen in der Frage an (weniger als 10% schneller als djpeg + pnmscale + cjpeg).