Schnellster JPEG Thumbnail Generator für Linux

9

Ich suche den schnellsten Befehlszeilen-Bildkonverter für Linux, der ein JPEG-Bild lesen, auf höchstens 1366 x 768 verkleinern und ein qualitativ 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, das vorzugsweise in C geschrieben ist und djpeg, eine qualitativ hochwertigere Version von pnmscale, und cjpeg integriert.

Ich habe gerade swiggle gefunden (ein C-Programm, das libjpeg verwendet), ich habe einige seiner 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 denke, die meisten Bildkonverter verwenden libjpeg, daher wäre es schwierig, viel schnellere Ergebnisse als Swiggle zu erzielen.

pts
quelle
1
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. Sie könnten in der Lage sein, etwas aufzupeitschen, wenn Sie mit c
Matt H
Ich stimme Matt zu. Wenn es sich um große Bilder handelt (und wenn es 12 Sekunden dauert, sind sie wahrscheinlich nicht klein), würde CUDA / OpenCL den Job erledigen. Oder einen besseren PC bekommen.
Apache
Die Bilder sind nicht zu groß (maximal 4000 x 3000). Die Konvertierung dauert 12 Sekunden für einen Bildsatz mit mehreren Dutzend Bildern.
Punkte

Antworten:

13

Die schnellste Bibliothek, die ich bisher verwendet habe, ist definitiv EPEG . Es kann nur Daumen aus JPG-Dateien erstellen, aber es erstellt sie 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 .

Sebastian Stumpf
quelle
2
github.com/mattes/epeg ... sehen Sie sich auch diese Gabel an.
Mattes
1
Siehe auch github.com/fawick/speedtest-resize für einen Benchmark verschiedener Bibliotheken
nh2
2

Ich habe dieses Problem gelöst, indem ich swiggle (ein JPEG-Miniaturbild mit Befehlszeile + HTML-Bildergalerie-Generator) heruntergeladen und seine Quelle an meine Bedürfnisse angepasst habe. Siehe die Geschwindigkeitsmessungen in der Frage (weniger als 10% schneller als djpeg + pnmscale + cjpeg).

pts
quelle