How-To :: conversão, redimensionamento e marca d’agua em imagens via terminal


Essa é para aqueles que como eu não tem paciência para o trato com programas gráficos, tipo o GThumb, seja para converter ou redimensionar imagens, para esses, seguem alguns exemplos práticos para a conversão em modo CLI.

Tudo o que você precisa de imediado chama-se ImageMagick, e este pacote vem presente por padrão em inúmeras distribuições.

Convertendo.

De início, tratemos de identificar as propriedades do arquivo alvo, aqui um .JPG com resolução 3264×1836 e um tamanho exagerado para postagem no blog, de 1.7MB:

$ file 20160723_081915.jpg

No 1º exemplo, demonstrarei como converter o mesmo para .JPEG, com fator de qualidade 75 (o que é muito pouco por causa da perda em qualidade):

$ convert -quality 75 20160723_081915.jpg 20160723_081915-75.jpeg

2016-07-23-110807_722x362_scrot

2016-07-23-110956_722x362_scrot

Examinando o tamanho dos arquivos (original e novo), vemos o seguinte:

$ du -sh 20160723_081915*
580K	20160723_081915-75.jpeg
1,7M	20160723_081915.jpg

Enquanto que se alterarmos o fator 75 por um maior, numa escala que vai até 95, temos o seguinte:

$ du -sh 20160723_081915*                                        
580K	20160723_081915-75.jpeg
680K	20160723_081915-80.jpeg
804K	20160723_081915-85.jpeg
1,1M	20160723_081915-90.jpeg
1,5M	20160723_081915-95.jpeg
1,7M	20160723_081915.jpg

Em geral, usar valores entre 85 e 95 garantem boa qualidade nas imagens convertidas, sabendo que quanto maior o fator, maior será o tamanho do arquivo.

Redimensionando.

No 2º exemplo, demonstrarei como redimensionar o mesmo para .JPEG, com resolução igual à resolução máxima utilizada em meu monitor, para tanto primeiro descubra qual é a sua com o utilitário xrandr:

$ xrandr 
Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 8192 x 8192
DVI-I-1 disconnected (normal left inverted right x axis y axis)
VGA-1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 477mm x 268mm
   1920x1080     60.00*+
   1680x1050     59.95  
   1600x900      60.00  
   1280x1024     75.02    60.02  
   1440x900      59.89  
   1280x800      59.81  
   1152x864      75.00  
   1280x720      60.00  
   1024x768      75.03    70.07    60.00  
   832x624       74.55  
   800x600       72.19    75.00    60.32    56.25  
   640x480       75.00    72.81    66.67    59.94  
   720x400       70.08  

O asterisco, indica a resolução em uso.

Sabendo qual a resolução, passemos ao comando propriamente dito:

$ convert -resize 1920x1080 20160723_081915.jpg 20160723_081915.jpeg

Que nos dá a diferença entre tamanhos ao rodar um simples du -sh:

$ du -sh 20160723_081915*                                           
652K	20160723_081915.jpeg
1,7M	20160723_081915.jpg

Converter e redimensionar.

Já se quisermos, redimensionar e converter ao mesmo tempo, para digamos fator 90, executamos:

$ convert -quality 95 -resize 1920x1080 20160723_081915.jpg 20160723_081915-1920x1080-95.jpeg

E como resultado, vejam os tamanhos dos arquivos:

$ du -sh 20160723_081915*
652K	20160723_081915-1920x1080-95.jpeg   # REDIMENSIONADO E CONVERTIDO PARA FATOR 95
652K	20160723_081915.jpeg   # APENAS REDIMENSIONADO
1,7M	20160723_081915.jpg   # ARQUIVO ORIGINAL

Marca d’água

E como brinde, segue um esquema de como insiro marca d’agua nas imagens postadas aqui no blog (é simples mais eficiente!).. bom… eu acho :):

Crie um script com um nome qualquer, aqui o chamei de watermark.sh, onde inseri o seguinte conteúdo:

#!/bin/sh

savedir="/home/edps/Documentos/Imagens/Originais"
mkdir -p /home/edps/Documentos/Imagens/Originais

for image in *png *PNG *jpg *JPG *jpeg *JPEG *gif *GIF
do
 if [ -s $image ] ; then
    width=$(identify -format %w $image)
    convert -background '#0008' -fill white -gravity center \
       -size ${width}x30 caption:'Mundo GNU :: https://edpsblog.wordpress.com' \
       $image +swap -gravity south -composite new-$image
     mv $image $savedir
     mv new-$image $image
    echo "marca d'agua criada com sucesso em: $image"
  fi
done

Como se pode notar, as imagens originais serão salvas (em meu caso), na pasta pré-definida no script: /home/edps/Documentos/Imagens/Originais, o que impede a perda das mesmas, vejam um exemplo de aplicação da marca dágua em arquivos contidos em ~/Documentos/RESOLVE_DEPS-SLACKBUILDS:

Documentos/RESOLVE_DEPS-SLACKBUILDS » ls  
2015-09-11-224031_1021x434_scrot.png
2015-09-11-224154_1012x434_scrot.png
Documentos/RESOLVE_DEPS-SLACKBUILDS » watermark.sh 
marca d'agua criada com sucesso em: 2015-09-11-224031_1021x434_scrot.png
marca d'agua criada com sucesso em: 2015-09-11-224154_1012x434_scrot.png
Documentos/RESOLVE_DEPS-SLACKBUILDS » 
Documentos/RESOLVE_DEPS-SLACKBUILDS » ls
2015-09-11-224031_1021x434_scrot.png
2015-09-11-224154_1012x434_scrot.png

2016-07-23-120110_722x344_scrot

E tendo dito… fui!

How-To :: conversão, redimensionamento e marca d’agua em imagens via terminal

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s