Como posso comprimir imagens?


25

Tenho 5.000 imagens que preciso compactar (para exibir no meu site).

Eu sou novo no Ubuntu. Então o que eu faço?



@MostafaAhangarha: Não é duplicado. Por favor, leia minha resposta askubuntu.com/a/781588/9598 e considere seu voto novamente para não fechar esta pergunta. É um bom. Obrigado!
Geppettvs D'Constanzo

Respostas:


21

Eu uso o Trimage super simples de usar.

adicione apenas imagem e comprima para instalar:

sudo apt-get install trimage

insira a descrição da imagem aqui


2
Não vejo nenhuma configuração pela qual eu possa definir o tamanho do arquivo compactado, tamanho do arquivo etc.
Rico

46

A palavra "compressão" parece ser mal interpretada nesta pergunta, mas ainda é válida dependendo do contexto que você deseja ver.

O cenário

Vamos admitir que designers da Web, desenvolvedores da Web e / ou mestres da Web precisam "compactar" nossos arquivos de imagem para torná-los "leves" o suficiente para serem rapidamente carregados em nossa hospedagem, se estivermos trabalhando diretamente em um ambiente de produção real. O que não afetará se estivermos trabalhando em um ambiente de produção de teste local.

Muitas das respostas parecem se referir a outras coisas, principalmente causadas por - provavelmente - elas não enfrentaram esse cenário. É por isso que começo a explicar isso.

Tão. Vamos entender o que a resposta precisa resolver:

  1. A imagem DEVE ser leve
  2. A imagem DEVE ser "compactada" para perder o tamanho do arquivo, mas não "redimensionada", conforme indicado por outro usuário que apontou para uma duplicata nesta questão .
  3. As imagens devem ser compactadas em lote, de preferência através de uma GUI.

Imagem leve

Vamos primeiro entender o que deve ser uma "imagem leve".

As imagens de alta definição, com resoluções acima de 1024px, podem ter um tamanho de arquivo grande. Eu forneço um exemplo nesta captura de tela:

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Na janela de propriedades do arquivo, podemos ver que este é um arquivo de 9,5 MB, que atrasará muito o upload e atrasará muito para renderizar na tela quando publicado em um site.

No entanto, o tamanho da imagem e a resolução da grade são realmente úteis para uma impressão de alta definição. Portanto, esse é um cenário diferente que não abordarei nesta explicação.

Então, como posso usar essa imagem em um site, sem esperar anos para fazer upload e esperar outros anos para mostrá-la no meu site?

O arquivo deve ser compactado.

E quando falamos de "compressão", precisamos explicitamente alterar sua qualidade para torná-la utilizável para o caso que estamos enfrentando.

Então, vamos largar o próximo em um terminal:

convert seminario-tabloide.png test.jpg

Isso converterá o formato PNG de alta definição em um formato JPG "compactado", que por si só é um arquivo menor! Vai de 9,5 MB a 2,4 MB.

insira a descrição da imagem aqui

Ainda grande?

Porém, 2,4 MB ainda é um tamanho grande de arquivo. Vamos agora jogar com outros comandos de conversão do ImageMagick para criar tamanhos de arquivo menores:

convert test.jpg -quality 50% test-50p.jpg

É isso que precisamos fazer para "compactar" uma imagem. Isso reduzirá a qualidade da imagem em 50% e fornecerá um tamanho de arquivo de 938,4 KB <=== (Nota: KILOBYTES, nem mesmo um Megabyte).

Podemos ir além e criar um tamanho de arquivo menor ajustando a porcentagem no mesmo comando via:

convert test.jpg -quality 30% test-30p.jpg

Lembre-se de que neste exemplo estamos reduzindo a qualidade do arquivo, não as dimensões da imagem. O que resultará em um arquivo compactado que não será afetado visualmente quando renderizado na tela, mas você verá os artefatos ao imprimir em um tamanho de papel grande (maior que carta).

Redimensionando + Comprimindo = Super Cool!

Agora. Nós podemos fazer uma coisa diferente. Algumas coisas: De fato, podemos redimensionar as imagens e aplicar a compressão depois disso, o que resultará em um tamanho de arquivo menor que o original e fornecerá uma imagem útil para renderização na tela, não tão boa para impressão, mas parece que precisa exibi-lo na tela e não em um banner impresso, certo?

Então, vamos fazer o seguinte:

convert seminario-tabloide.png -resize 1024x test-1024x.jpg

Com esta instrução, estamos solicitando que a imagem seja redimensionada para ter 1024 pixels de largura por qualquer quantidade de pixels necessária para não perder a proporção.

Agora ... adivinhem?

O tamanho do arquivo foi reduzido de 9,5 MB para ... (música em suspense com congas, por favor) 433,7 KILOBYTES

Se desejarmos compactar no máximo um arquivo compactado máximo como este, enfrentaremos alguns dados gerais inseridos no arquivo e isso resultará em um tamanho de arquivo maior. Então eu não vou sugerir que você tente, mas se você está esperando que eu faça o exemplo, ok ... Aqui vamos nós!

convert test-1024x.jpg -quality 50% test-1024x-50p.jpg

E passamos de 433,7 KB para 176,2 KB em um único comando. Este exemplo foi bem-sucedido, no entanto, não espere que nenhum exercício resulte em tamanhos de arquivo menores. Mas você pode se divertir muito ao executar esse tipo de exercícios.

Processo descontínuo

Oh! Mas quase esqueço uma das necessidades: aplicar esse processo a muitas fotos com facilidade.

Para isso, podemos fazer isso com dois processos.

O terminal

Isso é mais rápido e mais fácil. Então, digamos ao terminal que precisamos executar a mesma instrução em todos os arquivos em um diretório, após o qual explicarei outras instruções.

Converta tudo em 1024px (você pode usar qualquer quantidade de pixels)

for i in *; do convert $i -resize 1024x $i-1024x.jpg; done;

Aqui, solicitamos ao comando que execute a mesma instrução para todos os arquivos em um diretório, aplique a transformação e solte uma cópia com um nome diferente para facilitar a seleção.

Reduza a qualidade em porcentagem (use qualquer porcentagem que desejar) em todas as imagens em um diretório:

for i in *-1024x.jpg; do convert $i -quality 50% $i-50p.jpg; done;

Aqui, solicitamos que as imagens redimensionadas sejam reduzidas em qualidade para diminuir o tamanho do arquivo.

Você pode jogar com esses comandos e ver seus resultados. Depois de algumas horas se divertindo, você será um especialista.

Script Nautilus

Em 20 de abril de 2015, enfrentei uma situação como a pergunta original, então tive que fazer uma pesquisa e pedir ajuda em uma pergunta. É por isso que agora eu sei muito disso. Não pense que nasci com esse conhecimento, cara.

Se você não está acostumado a terminais e / ou deseja usar uma GUI para escolher simplesmente seus grupos de arquivos e aplicar as transformações, é possível criar seu próprio script de ações do Nautilus para simplesmente clicar com o botão direito do mouse no grupo de arquivos e escolher uma opção no menu de contexto.

Para obter instruções sobre como fazer isso, leia a pergunta, a resposta e os comentários aqui: Como processar em lote imagens JPG para alterar sua qualidade com o Nautilus-Actions?

Boa sorte!


1
Esta é a resposta "me ensine a pescar". convertAs habilidades de linha de comando do ImageMagick são ótimas.
Charney Kaye

Sólido! Usei o editor de texto Sublime Text no modo multi-cursor para alterar rapidamente vários comandos de uma só vez, para uma compactação "em lotes" de várias fotos. Acabei de usar o convert photo.jpg -quality 70% photo_compressed.jpgformato de comando e funcionou muito bem! Mesmo configurando a compactação para apenas 70% da qualidade do original, o tamanho da foto foi reduzido para ~ 37% do original, pois o efeito é ampliado nos eixos xey.
Gabriel Staples

Explicação fantástica de conceitos muitas vezes incompreendidos. Para completar, deixe-me acrescentar que, para o processamento em lote, você também pode usar o mogrify do ImageMagick, em vez de converter, em que eu faço uma pasta para conter os resultados, em seguida, apenas processe nessa pasta, que também mantém as coisas organizadas. Por exemplomogrify -resize 1600 -path dir_name -format JPG -quality 90 *.tif
Dennis

0

Se você estiver se referindo a imagens JPEG, a compactação de fato não é possível. Como o jpeg é, por definição, um formato de arquivo compactado (todo ruído e pixels inúteis já foram removidos). Você pode compactá-los, mas o tamanho total permanecerá aproximadamente o mesmo. O único algoritmo de compactação avançado que eu conheço para jpegs é o zipx. Mas o zipx é de propriedade do Winzip e garante um max. tamanho reduzido em 30% (no modo de arquivo zipx).

Para exibir suas imagens na Web, primeiro você deve redimensioná-las (menos de 1 MB por cada uma) e, opcionalmente, convertê-las para o formato de arquivo png. PNG (= gráficos de rede portáteis) é especialmente otimizado para transferência mais rápida da Web e exibição mais rápida. Usuários avançados podem até converter essas imagens para o formato webp (formato do Google para fotos, algoritmo de carregamento mais rápido).

Você pode converter imagens em lote com o XnConvert e redimensioná-las em lote com o XnView. Faça o download do pacote deb aqui: http://www.xnview.com/de/xnviewmp/#downloads , clique com o botão direito do mouse e abra-o com o Gnome Software.

Se você não se importa com a velocidade de carregamento da rede, mas se preocupa com a qualidade, mantenha suas imagens intocadas e crie uma biblioteca digital para elas. Talvez faça o upload para um servidor público (Yahoo, Google, etc).


3
Você pode mencionar as várias opções para compactação / qualidade de jpeg; é bem possível reduzir o tamanho do arquivo de uma imagem jpeg aumentando sua compactação (e, portanto, reduzindo sua qualidade).
25416 Nick Weinberg

1
Minha compreensão da compactação significa eliminar pixels desnecessários, mantendo a mesma qualidade. Reduzir qualidade não é compactação, é apenas redução ou amostragem. A compactação sem perdas é possível usando o formato zipx, que funciona muito bem com fotos burst. Ele cria algum tipo de pilha sobreposta / superestilada de fotos semelhantes, na qual todos os pixels duplos são achatados em uma camada separada, algo semelhante a um arquivo .css em uma página da web. Pixels repetidos são definidos como uma entidade separada dentro do arquivo morto.
Ipse lute
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.