Ferramentas para otimização de JPEG? [fechadas]

114

Você conhece alguma ferramenta (de preferência linha de comando) para otimizar JPEGs de forma automática e sem perdas que eu possa integrar em nosso ambiente de construção? Para PNGs, estou usando PNGOUT e geralmente economiza cerca de 40% da largura de banda / tamanho da imagem.

No mínimo, eu gostaria de uma ferramenta que pudesse retirar metadados dos JPGs - notei um caso estranho em que tentei fazer a miniatura de uma fotografia e não consegui ficar menor que 34 kB. Depois de investigar mais, descobri que os dados EXIF ​​ainda faziam parte da imagem e a miniatura tinha 3 kB após a remoção dos metadados.

E além disso - é possível otimizar ainda mais JPGs sem perdas? O otimizador PNG tenta diferentes estratégias de compressão, inicialização aleatória da codificação Huffmann etc.

Estou ciente de que a maioria das economias vem do parâmetro de qualidade JPEG e que é uma medida bastante subjetiva. Estou apenas procurando uma ferramenta que possa ser executada como uma etapa de construção e que comprima alguns bytes das imagens sem perdas.

chris166
fonte
Você está dizendo que havia cerca de 10 KB de EXIF ​​em um JPG otimizado antes de EXIF ​​ser removido?!?!?! Eu me pergunto o que há nele!
netrox de
Era todo o bloco EXIF ​​de uma câmera digital, incluindo cada pequeno detalhe sobre esta fotografia (exposição, tempo do obturador, etc ...)
chris166
@netrox chris166 Esses detalhes não ocupam muito espaço, o que ocupa muito espaço são as visualizações (dados binários).
Ariel
1
Dois artigos de comparação interessantes, que listam os utilitários listados abaixo: Comparison of JPEG Lossless Compression Tools, junho de 2014 ; Referência de ferramentas de otimização JPEG, fevereiro de 2013 .
dma_k
@Ariel: O perfil ICC também tende a ocupar um grande espaço. Eu vi mais de 500 KB de dados binários de perfil ICC.
saurabheights

Respostas:

68

Eu uso libjpeg para operações sem perdas. Ele contém uma ferramenta de linha de comando jpegtran que pode fazer tudo o que você quiser. Com a opção de linha de comando, -copy nonetodos os metadados são removidos e -optimizefaz uma otimização sem perdas da compressão Huffmann. Você também pode converter as imagens para o modo progressivo com -progressive, mas isso pode causar problemas de compatibilidade (alguém sabe mais sobre isso?)

OutOfMemory
fonte
5
Uau, isso parece promissor. Se alguém estiver interessado, o download para Windows está em gnuwin32.sourceforge.net/packages/jpeg.htm
chris166
Eu estou indo para este. Reduz minha imagem de fundo de 62 kB para 49 kB no modo progressivo. Outra imagem (27 kB) foi reduzida para 23 kB. Isso representa uma economia de 15-20% sem perda de qualidade!
chris166 de
2
progressivo funciona bem em basicamente tudo, a única desvantagem é que usa mais CPU para decodificar (não o suficiente para importar).
Ariel
1
o progressivo pode muitas vezes ser maior do que a linha de base para arquivos menores que 9k
Collin Anderson
3
O Progressive precisa de muito mais memória para decodificar. JPEGs regulares podem ser transmitidos: você só precisa decodificar em pequenas seções. Para decodificar um jpg progressivo, você precisa manter toda a imagem descompactada na memória de uma vez.
jcupitt
72

Eu escrevi uma GUI para todas as ferramentas de otimização de imagem que pude encontrar , incluindo MozJPEG e jpegoptimque otimizam tabelas Huffman, varreduras progressivas e (opcionalmente) removem metadados invisíveis.

ImageOptim smushing it

Se você não tem um Mac, também tenho uma interface web básica que funciona em qualquer plataforma.

Kornel
fonte
5
Excelente! Você, senhor, precisa de um botão Flattr. Ou junte-se ao Gittip.
Thilo
2
ImageOptim e ImageAlpha são ótimos!
Jon z
Ótima ferramenta - pequena sugestão. Por que restringir JPEGoptim para qualidade de 80% - imagens de fundo grandes geralmente você deseja ir para 60% ou até menos. thx
niico
por que remover dados EXIF? : /
Adrien Be,
@AdrienBe 1. Privacidade. Você pode não querer que todos na rede saibam sua localização GPS. 2. porque em arquivos salvos do Photoshop, pode haver megabytes de lixo XML embutidos nos arquivos.
Kornel,
12

[SOMENTE WINDOWS]

RIOT (Radical Image Optimization Tool) Esta é a maior ferramenta de otimização de imagem que encontrei!

http://luci.criosweb.ro/riot/

Você pode facilmente obter uma imagem de 10 MB até 800 KB por meio de subamostragem. Suporta PNG, GIF e JPEG. Ele ainda se integra a menus de contexto para que você possa enviar fotos diretamente para lá. Permite girar, redimensionar, compactar para KBs especificados e muito mais. Também possui plug-ins para GIMP e IrfanView e outras coisas.

Também existe uma DLL disponível se você quiser incorporá-la em seus próprios programas ou programa java script / c ++.

Outra alternativa é http://pnggauntlet.com/ PNGGAUNTLET leva uma eternidade, mas faz um ótimo trabalho.

[SOMENTE WINDOWS]

Ben
fonte
7
Aviso: RIOT parece bom, mas instala TuneUp e tal sem perguntar, .. Eu classificaria isso como Malware.
Daniel W.
1
@DanFromGermany está certo. Veja as avaliações aqui: download.cnet.com/RIOT/3000-12511_4-10911908.html#summaryList
RNickMcCandless
1
Isso nunca aconteceu até recentemente.
Ben,
Alerta de malware! O gerenciador de download do Chrome avisa que RIOT é malware
ruhong
8
Para sua informação: existe um arquivo .zip portátil para RIOT que não contém malware ou instaladores de qualquer tipo. Basta rolar para baixo em sua página de downloads. luci.criosweb.ro/riot/download
Goyuix
12

Um novo serviço chamado JPEGmini produz resultados incríveis. Uma pena que seja apenas online. Editar : está disponível para Windows e Mac agora

Eduardo molteni
fonte
Agora temos um aplicativo Mac disponível (divulgação: estou na equipe de desenvolvimento)
DanJ
4
Não sei se você é o autor ou não, mas esse aplicativo está enganando os usuários. Se você executar jpegquality.c em suas "mini" imagens para detectar a quantidade de compactação e, em seguida, compactar os originais com imagemagick com a mesma qualidade => você obterá os mesmos resultados, os mesmos artefatos JPEG em ambas as imagens. Imagemagick pode ser de código aberto, mas isso não torna ok para usá-lo e, em seguida, afirma que você desenvolveu uma nova tecnologia de compressão
bela bunda
@onetrickpony: Não sou afiliado a eles de forma alguma.
Eduardo Molteni
@niceass Como você sabe que JPEGmini está usando o código ImageMagick? Saber que o fator de qualidade é o mesmo que a saída do IM não é prova. Meu palpite é que eles recompactam a imagem para reduzir os fatores de qualidade, talvez com um pouco de filtragem, e usam algumas métricas de qualidade para decidir quando parar.
Koan
Eu executei o JPEGmini mais recente em uma imagem que eu já havia exportado do ImageMagick e foi relatado que o JPEGmini já havia sido executado nele - o que não me lembro de ter feito. Executando jpegtran -optimize -copy nenhum na mesma imagem reduziu o tamanho em 12 KB.
Koan
10

Experimentei várias das sugestões acima - pessoalmente, estava atrás da compressão sem perdas.

Minha imagem de amostra tinha um tamanho original de 67.737 bytes.

Usando kraken.io, caiu para 64.718 Usando jpegtran, caiu para 64.718 Usando yahoo smush-it, caiu para 61.746 Usando imagemagick (-strip), caiu para 65.312

A opção smush.py parece promissora, mas a instalação era muito complexa para eu fazer rapidamente

jpegrescan parece promissor também, mas parece ser unix e estou usando windows

jpegmini NÃO é sem perdas, mas não consigo ver a diferença (até 22.172)

O aplicativo Altrasoft jpegstripper do plinth não funciona no meu windows 7

jpegoptim não é windows - não é bom para mim

A Riot (mantendo a qualidade em 100%) baixou para 63.416 e com subamostragem de croma definida para alto, baixou para 61.912 - não sei se isso é sem perdas ou não, e acho que parece mais leve que o original .

Então, meu veredicto é yahoo smushit se deve ser sem perdas

Graham Butcher
fonte
jpegrescan funciona no Windows se você for teimoso. Ele reduz o tamanho como mágica (5-15% sem perda de qualidade), o que é incrível, porque está apenas reordenando a varredura progressiva ordenando AFAIK (você pode notar o mesmo em outros programas, os arquivos às vezes ficam um pouco menores no Photoshop se você escolher um número diferente de varreduras, sem motivo aparente). Além disso, foi feito por um dos caras que fizeram o x264, ele é um prodígio no campo da compressão.
Camilo Martin
7

ImageOptim é realmente inteligente. A opção de linha de comando postada pelo autor irá preencher a GUI e mostrar o progresso. Usei jpegtran para otimizar e converter para progressivo, depois ImageOptim para otimizações progressivas adicionais e para outros tipos de arquivo.

Reutilização de código de script também encontrada neste fórum (todos os arquivos substituídos no local):

jpegtran

for file in $(find $DIR -type f \( -name "*.jpg" -or -name "*.jpeg" -or -name "*.JPG" \)); do
    echo found $file for optimizing...
    jpegtran -copy comments -optimize -progressive -outfile $file $file
done

ImageOptim

for file in $(find $DIR -type f \( -name "*.jpg" -or -name "*.png" -or -name "*.gif" \)); do
do
    echo found $file for optimizing...
    open -a ImageOptim.app $file
done
bsy-web
fonte
4

Caso alguém esteja procurando, escrevi uma versão offline do Smush.it do Yahoo. Ele otimizará pngs, jpgs e gifs (animados e estáticos) sem perdas:

http://github.com/thebeansgroup/smush.py

Timmy
fonte
Funciona bem, mas há um problema com a compressão do PNG :(
4

Você pode usar jpegoptim, que otimizará arquivos jpeg sem perdas por padrão. A --strip-allopção remove todas as informações extras incorporadas. Você também pode especificar um modo com perdas com o--max chave, o que é útil quando você tem imagens salvas com uma configuração de qualidade muito alta, que não é necessária, por exemplo. conteúdo web.

Você obtém uma otimização semelhante à do jpegtran (veja a resposta de OutOfMemory), mas o jpegoptim não pode salvar em jpegs progressivos.

cinza azulado
fonte
4

Eu escrevi uma ferramenta de linha de comando chamada 'picopt' (semelhante ao ImageOptim) que usa programas externos para otimizar JPEGs, PNGs, GIFS, GIFS animados e até mesmo conteúdo de arquivo de quadrinhos (CBR / CBZ).

É adequado para uso com homebrew em sistemas OS X ou Linux onde você instalou ferramentas como jpegrescan, jpegtran, optipng, gifsicle, etc.

https://github.com/ajslater/picopt

AJ Slater
fonte
Existe uma versão do Windows disso?
starbeamrainbowlabs 02 de
se você pode instalar suas dependências posix em um ambiente Windows como o cygwin, ele pode. Você seria o primeiro a testá-lo, no entanto.
AJ Slater
3

Eu também recomendaria ImageMagick . Tem uma opção de linha de comando para remover metadados EXIF

mogrify -strip image.jpg

Existem muitas outras ferramentas por aí que fazem a mesma coisa.

No que diz respeito à recompactação de JPEGs, não faça isso. No início, os JPEGs apresentam perdas, portanto, qualquer forma de recompressão prejudicará a qualidade da imagem. No entanto, se você tiver imagens codificadas sem perdas, alguns codificadores fazem um trabalho melhor do que outros. Percebi que JPEGs feitos com Photoshop têm uma aparência melhor do que quando codificados com ImageMagick (apesar do mesmo tamanho de arquivo) por motivos complicados . Além disso (e isso é relevante para você), eu sei que pelo menos o Photoshop pode salvar JPEGs como otimizados, o que significa que eles perdem a compatibilidade com algumas coisas que você provavelmente não se importa para salvar alguns KB. Além disso, certifique-se de não ter nenhum perfil de cor incorporado e você poderá salvar mais alguns KB.

David Johnstone
fonte
Interessante. Sempre pensei que 90% de qualidade é a mesma em todas as ferramentas de imagem. O Photoshop é a única ferramenta que usa coeficientes DCT otimizados?
chris166 de
1
Achei que 90% seriam os mesmos em várias ferramentas até tentar salvar as mesmas imagens no Photoshop e Imagemagick. Descobri que cerca de 70% em Salvar para a Web no Photoshop criava arquivos quase do mesmo tamanho que 92% no Imagemagick, mas os arquivos do Photoshop eram de qualidade notavelmente melhor. Não tenho ideia de como outras ferramentas fazem isso.
David Johnstone
Você sabe como realizar a remoção de metadados EXIF ​​usando a versão PHP do ImageMagick?
Sonny
@Sonny Na verdade, não, mas você pode estar interessado nesta função: php.net/manual/en/function.imagick-stripimage.php
David Johnstone
Obrigado David, foi isso que acabei encontrando. Aqui está o meu tópico: stackoverflow.com/questions/2540068
Sonny
2

Eu recomendaria usar http://kraken.io. É um webapp ultrarrápido que otimizará seus arquivos PNG e JPEG muito melhor do que o smush.it.

Pono
fonte
2

Recomendo usar JpegOptim, é grátis e muito legal, você pode especificar a qualidade, o tamanho que quiser ... E fácil de usar na linha de comando.

JpegOptim

agonista_
fonte
1

Posso recomendar isso para quase transparência:

convert 'yourfile.png' ppm:- | jpeg-recompress -t 97 -q veryhigh -a -m smallfry -s -r -S disable - yourfile.jpg

Ele usa imagemagick 's converte jpeg-recompressde jpeg-archive .

Ambos são de código aberto e funcionam em Windows, Mac e Linux. Você pode querer ajustar as opções acima para diferentes expectativas de qualidade.

Camilo Martin
fonte