Estou procurando o conversor de imagem de linha de comando mais rápido para Linux que pode ler uma imagem JPEG, reduzi-la para no máximo 1366x768 e gravar uma imagem JPEG de qualidade 50. Algo assim, mas muito mais rápido que o ImageMagick:
$ convert -resize x768 -quality 50 foo42.jpg foo42.th.jpg
# takes 0m16.713s for my test image set
Eu também tentei isso:
$ <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
Então, eu gostaria de ter um programa, de preferência escrito em C, que integre djpeg, uma versão de qualidade superior do pnmscale e cjpeg.
Acabei de encontrar swiggle (um programa em C usando libjpeg), desabilitei algumas das funcionalidades que não preciso no código-fonte e tenho:
$ swiggle -f -H 768 .
# takes 0m11.378s for my test image set, yields high quality results
Você tem outra sugestão? Eu acho que a maioria dos conversores de imagem usa libjpeg, por isso seria difícil obter resultados muito mais rápidos do que o swiggle.
Respostas:
A biblioteca mais rápida que usei até agora é definitivamente o EPEG . Ele só pode criar miniaturas de arquivos JPG, mas as cria muito rapidamente:
Imagemagick:
EPEG:
Eu usei essa biblioteca para criar miniaturas para uma grande quantidade de imagens realmente grandes.
fonte
Resolvi esse problema baixando o swiggle (uma miniatura JPEG da linha de comando + gerador de galeria de imagens HTML) e modificando sua fonte para minhas necessidades. Veja as medições de velocidade na pergunta (menos de 10% mais rápido que djpeg + pnmscale + cjpeg).
fonte