13

I'm looking for the fastest command-line image converter for Linux which can read a JPEG image, scale it down to at most 1366x768, and write a quality 50 JPEG image. Something like this, but much faster than ImageMagick:

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

I've also tried this:

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

So I'd like to have a program, preferably written in C, which integrates djpeg, a higher quality version of pnmscale, and cjpeg.

I've just found swiggle (a C program using libjpeg), I've disabled some of it's functionality I don't need in the source code, and I've got:

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

Do you have another suggestion? I guess most image converters use libjpeg, so it would be hard to get much faster results than swiggle.

3
  • 1
    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
    – hookenz
    Feb 24, 2011 at 2:44
  • I agree with Matt. If those are huge images (and if it takes 12 seconds then I guess they are not small), then CUDA/OpenCL would do the job. Or get a better PC.
    – Apache
    Feb 24, 2011 at 6:15
  • The images are not too large (4000x3000 is the maximum) -- conversion takes 12 seconds for an image set of several dozen images.
    – pts
    Mar 11, 2011 at 10:39

2 Answers 2

14

The fastest library I've used so far is definitely EPEG. It can only create thumbs from JPG files, but it creates them very fast:

$ 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

I used this library to create thumbs for a vast amount of really large images.

2
2

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).

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .