Categorias
Casos Conversão Linux procedimentos suporte

Redução de tamanho de arquivos de imagem

processamento em lote de imagens com o Gimp para diminuir o tamanho dos arquivos pela redução da qualidade.

Problema:

Imagens estão ocupando muito espaço na hospedagem do site. Reduzir a qualidade das imagens .

O tamanho das imagens também podem vir

  1. do tamanho das própria imagem
  2. Resolução da imagem.

 

Proposta:

Usar o Gimp em seu processamento de lote para ajustar a qualidade das imagens (50% no caso das imagens JPEG) o mesmo procedimento para as fotos.

Claro que se as imagens já estiverem com esta qualidade, ou menor, não haverá ganho.

Um pouco de Código:


 (define (batch-half-quality-jpeg-file pattern
                                      radius
                                      amount
                                      threshold)
    (let* ((filelist (cadr (file-glob pattern 1))))
       (while (not (null? filelist))
         (let* ((filename (car filelist))
            (image (car (gimp-file-load RUN-NONINTERACTIVE
                                        filename filename)))
            (drawable (car (gimp-image-get-active-layer image))))
         (file-jpeg-save RUN-NONINTERACTIVE
                         image drawable filename filename
                         0.50 0 1 1 "GIMP" 0 1 0 0)
                  ; 0.50 quality (float 0 <= x <= 1)
                  ; 0 smoothing factor (0 <= x <= 1)
                  ; 1 optimization of entropy encoding parameter (0/1)
                  ; 1 enable progressive jpeg image loading (0/1)
                  ; "xxxx" image comment
                  ; 0 subsampling option number
                  ; 1 force creation of a baseline JPEG
                  ; 0 frequency of restart markers
                  ; in rows, 0 = no restart markers
                  ; 0 DCT algoritm to use
         (gimp-image-delete image))
         (set! filelist (cdr filelist)))))

Este código foi colocado em um arquivo batch-half-quality-jpeg-file.scm na pasta ~/.gimp-2.8/scritps

Ooops. Parece que restos do código antigo ficaram neste código. Recomenda-se cautela.

O script foi executado de um terminal

~$ gimp -i -b '(batch-half-quality-jpeg-file "./fotos/lote01-50/*.JPG" 5.0 0.5 0)' -b '(gimp-quit 0)'

Note que os arquivos originais são sobreescritos sem maiores questionamentos.

O processamento resulta em algumas mensagens de alerta como

(gimp:15907): GLib-GObject-WARNING **: g_object_set_valist: object class 'GeglConfig' has no property named 'cache-size'
...
(gimp:15907): GEGL-gegl-operation.c-WARNING **: Cannot change name of operation class 0x123A330 from "gimp:point-layer-mode" to "gimp:anti-erase-mode"
While parsing XMP metadata:
Erro: não foi encontrado nenhum pacote XMP
....
batch command executed successfully

Porem atinge os nossos objetivos de diminuir o tamanho dos arquivos de image.

Como esta solução foi usada em um Ubuntu 15.10 e GIMP 2.8, algumas adaptações podem ser necessárias para o seu ambiente.

Referencias:

  1. GNU Image Manipulation Program – Documentação bem completa do Gimp.
  2. GIMP Batch Mode – um tutorial para começar a entender o processamento em lote usando o Gimp.
  3. Preparing your Images for the Web – Orientações de preparação de imagens para uso na Web.
  4. Your First Script-Fu Script
  5. Automatic Creation of XCF from JPG – Será que dá para salva de volta como JPEG, mas com novos parametros de qualidade?
  6. Writing GIMP Scripts and Plug-Ins – o básico sobre escrever scripts e plugins para o Gimp.
  7. Notes on GIMP Scripting
  8. GIMP: Re-uniting Save and Export
  9. Krita – Alternativa ao Gimp como ferramenta de desenho.
  10. Some GIMP Scripts-Fu (and Related ImageMagick Notes)

Deixe uma resposta

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.