ImageMagick – Reduzindo tamanhos de arquivo

Imagemagick Reduzindo Tamanhos De Arquivo



Uma imagem bonita e grande é ótima; geralmente é acompanhado por uma qualidade tremenda. No entanto, muitas e muitas vezes você não pode se dar ao luxo de ter fotos muito grandes. Às vezes, tudo o que você deseja é uma imagem de tamanho decente ou mesmo uma que seja menor do que um determinado tamanho. Nesses casos, tudo o que o programador deseja é encontrar um meio-termo entre qualidade e tamanho. Teoricamente, se você desistir totalmente da qualidade, o tamanho do arquivo não deve ser um problema, mas o verdadeiro negócio é encontrar um meio-termo entre qualidade e tamanho do arquivo. Neste tutorial, discutiremos maneiras de reduzir o tamanho do arquivo de imagens usando o ImageMagick (sem comprometer muito a qualidade).

Instalando o ImageMagick

Vamos precisar do ImageMagick para isso, então primeiro vamos instalá-lo:







sudo apt-get install imagemagick



O interruptor de qualidade

A primeira e mais fácil maneira de reduzir o tamanho de uma foto/imagem/vídeo é reduzir a qualidade da foto. A opção de qualidade representa o nível de compactação JPEG/MIFF/PNG. Para JPEG e MPEG, uma qualidade de 1 representa o nível mais alto de compactação e a qualidade de imagem mais baixa, enquanto 100 representa o menor nível de compactação e a melhor qualidade.



Então, vamos ver um exemplo; a foto que tirei de uma árvore tem 4624×3468 em termos de resolução e 5,70226MiB. Esta é a imagem original, um JPEG, para ser específico.






Agora, o ponto é que queremos reduzir o tamanho da imagem. Então, vamos tentar definir as configurações do interruptor de qualidade para algo um pouco diferente e ver o que acontece.

converter tree_4624x3468.jpg -qualidade 75 tree_4624x3468_quality75.jpg
converter tree_4624x3468.jpg -qualidade 25 tree_4624x3468_quality25.jpg



Reduzi a qualidade para 75 para uma foto e 25 para outra. A imagem original tinha 5,70226MiB, mas a imagem com qualidade de 75 passou para 2,74664MiB enquanto a de qualidade 25 passou para 1358250 (1,295MiB). Aqui, eu pessoalmente escolheria a qualidade de 75%.



Agora, como também nos preocupamos com a qualidade real da foto, deixe-me mostrar as fotos:


tree_4624x3468_quality75.jpg


tree_4624x3468_quality25.jpg

Como você pode ver, a qualidade não foi muito afetada, mas o tamanho do arquivo é menor.

Agora, tentei fazer o mesmo com PNG, e foi isso que obtive:


Então, passou de 23501600B (22,413MiB) para 22,2854MiB. Para um JPEG, passou de 5,70226MiB para 1,295MiB. Para formatos sem perdas, como PNG, a mudança de qualidade é muito mais difícil.

Redimensionando imagens

Redimensionar fotos é outra maneira. Por exemplo:

converter tree_4624x3468.jpg -redimensionar cinquenta % x50 % tree_4624x3468_resize50 % .jpg



Como você pode ver claramente, a imagem que tinha 4624×3468 tinha 5,70226MiB, enquanto a que tinha 2312×1734 tinha apenas 1,56287MiB.

O interruptor de definição

A opção definir é seguida por uma chave e seu valor fornecido.

-define chave{=valor}…

A lista de possíveis valores-chave pode ser encontrada em .

Para PNG, você pode usar png:compression-level=value. O valor pode ser de 0 a 9. Um valor de 0 fornecerá a menor compactação, mas é rápido, e um valor de 9 fornecerá a melhor compactação, mas é a mais lenta. Qualquer coisa intermediária também vale.

Por exemplo:

converter árvore_4624x3468.png -definir png:nível de compressão= 9 tree_4624x3468_compression9.png



Na maioria dos casos, o que um programador deseja é definir um tamanho máximo para uma foto. Então, suponha que você queira definir um tamanho máximo para uma foto. Você pode usar a opção definir para fazer isso.

-define jpeg:extent={tamanho}

converter  tree_4624x3468.jpg -definir jpeg: extensão =1MB tree_4624x3468_extent1MB.jpg



Como você pode ver na imagem acima, ele definiu uma resolução de 4624 × 3468 e um tamanho de 0,897MiB. Assim, como você solicitou, o ImageMagick criou uma foto com tamanho inferior a 1 MB.

Interruptor de faixa

As fotos que tiramos com câmeras vêm com metadados. A remoção dos metadados também pode liberar algum espaço. No ImageMagick, fazemos isso usando o interruptor de faixa.

converter tree_4624x3468.jpg -faixa tree_strip.jpg



Aqui, como podem ver, a foto original tem 4624×3468 e 5,7MiB. Mas a imagem que teve seus metadados removidos é de 4,65MiB.

Interruptor de espaço de cores

Você também pode tentar mudar o espaço de cores. Nesta primeira instância, vou deixá-lo cinza.

converter tree_4624x3468.jpg -espaço colorido árvore cinza_gray.jpg -qualidade 75



Como você pode ver, a redução do tamanho da imagem não é muito grande, mas há uma redução – de 5,70226MiB para 4,44997MiB.

Como alternativa, também tentei o seguinte:

converter árvore_4624x3468.png -espaço colorido cinza tree_graypng.png



No caso de um PNG, minha foto original, que é 4624 × 3468, tem 22,42MiB, mas quando deixo cinza, fica 8,88MiB.

Interruptor de cores

Você também pode optar por alterar o número de cores usadas. Neste caso específico, vou usar apenas 16 cores em um PNG.

converter árvore_4624x3468.png -cores 16 tree_4624x3468_16colors.png



O PNG original tinha 4624 × 3468 e 22,42MiB. No entanto, quando mudei as cores para apenas 16, a imagem ficou com 4,27MiB de tamanho. E a foto fica assim:


tree_4624x3468_16colors.png

Usando vários interruptores

Agora, você não precisa usar um único botão em uma foto! Você pode combinar quantas opções quiser em uma foto.

Então, no exemplo 1, vou tirar uma foto PNG de uma árvore. Esta foto original tem 4624 × 3468 e 22,42 MiB de tamanho, e vou usar vários interruptores e ver aonde isso me leva.

converter árvore_4624x3468.png -faixa -redimensionar 75 % x75 % -definir png:nível de compressão= 9 -espaço colorido cinza  árvore_4624x3468_reposedsize.png



Então esse PNG, com tamanho original de 22,42MiB, virou uma imagem de 5,3MiB. A imagem resultante tem cerca de 23% do tamanho original.

Então, a seguir, vamos verificar um JPG.

converter tree_4624x3468.jpg -qualidade 75 -redimensionar 75 % x75 % -faixa -cores 16 tree_4624x3468_reducedsize.jpg



Então, aqui, para o JPG, passamos de um tamanho original de 5,7MiB para cerca de 2,2MiB para uma imagem colorida.

Mas se não fosse colorido:

converter tree_4624x3468.jpg -qualidade 75 -redimensionar 75 % x75 % -faixa -espaço colorido árvore cinza_4624x3468_reducedsize.jpg



Aqui, passamos de um tamanho original de 5,7 MiB para 1,6 MiB para uma imagem cinza.

Se você quisesse, também poderia definir um limite máximo para o tamanho. O ponto é que você pode reduzir o tamanho se realmente se dedicar a isso.

Conclusão

Ao escrever código para uma finalidade específica, tendemos a usar imagens também e, às vezes, simplesmente não podemos nos dar ao luxo de ter imagens muito grandes. Nesses casos, o foco principal do programador é encontrar um meio-termo entre o tamanho da imagem e a qualidade da imagem. Não queremos usar fotos com qualidade muito baixa, mas também não podemos ter fotos grandes. Portanto, precisamos de maneiras de reduzir o tamanho da imagem. O ImageMagick oferece uma variedade de maneiras de reduzir o tamanho da sua imagem na forma de vários interruptores – qualidade, redimensionar, definir, etc. Você pode usar um ou mais deles para ajustar o tamanho da imagem.