Tenho 5.000 imagens que preciso compactar (para exibir no meu site).
Eu sou novo no Ubuntu. Então o que eu faço?
Tenho 5.000 imagens que preciso compactar (para exibir no meu site).
Eu sou novo no Ubuntu. Então o que eu faço?
Respostas:
A palavra "compressão" parece ser mal interpretada nesta pergunta, mas ainda é válida dependendo do contexto que você deseja ver.
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:
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:
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?
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.
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).
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.
Oh! Mas quase esqueço uma das necessidades: aplicar esse processo a muitas fotos com facilidade.
Para isso, podemos fazer isso com dois processos.
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.
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!
convert
As habilidades de linha de comando do ImageMagick são ótimas.
convert photo.jpg -quality 70% photo_compressed.jpg
formato 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.
mogrify -resize 1600 -path dir_name -format JPG -quality 90 *.tif
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).