Visite também: Currículo ·  Efetividade BR-Mac

O que é LinuxDownload LinuxApostila LinuxEnviar notícia


Reduzindo imagens em lote automaticamente

Existem várias abordagens para conversão automática de formatos de fotos: arrastando-as para o ícone de um utilitário, detectando automaticamente sua gravação em determinado diretório, rodando diretamente um comando ou script na shell, etc. O Fernando Ebrahim, do IFTO, publicou no Dicas-L a sua solução: um script que roda na crontab (no caso dele, em um servidor de arquivos) e periodicamente reduz (com ajuda do venerável ImageMagick) o tamanho de todas as imagens colocadas em determinado diretório pelos usuários. (via dicas-l.com.br – “[Dicas-L] Reduzindo imagens em Lote”)


• Publicado por Augusto Campos em 2012-12-07

Comentários dos leitores

Os comentários são responsabilidade de seus autores, e não são analisados ou aprovados pelo BR-Linux. Leia os Termos de uso do BR-Linux.

    Patola (usuário não registrado) em 7/12/2012 às 1:51 pm

    Cheguei a fazer um script semelhante mas que reduz as imagens por um raio (retamanho x.gif 2.0) ou reduz para um tamanho configurável (500k) — e.g. retamanho x.gif vai redimensionar a imagem até que ela tenha entre 470k e 500k. Se for gif, ele automaticamente otimiza com o gifsicle. Funciona com imagens animadas.

    Pra quem se interessar ele está aqui; fiz em zsh, mas talvez funcione em bash: http://pastebin.com/equYuXbh

    Edd (usuário não registrado) em 7/12/2012 às 4:36 pm

    Eu uso aqueles nautilus-scripts (Que usa o imageMagick):

    http://freecode.com/projects/resize-image-nautilus-script

    Bem prático.

    Leandro Santiago (usuário não registrado) em 7/12/2012 às 5:10 pm

    Infelizmente o imagemagick tem um problema incrível com performance. Durante um tempo testei na empresa os implementações do Magick++ (API em C++) do Imagemagick e do GraphicsMagick (fork do imagemagick que mantem boa compatibilidade dos comandos e API) e este teve uma performance, na conversão de imagens de diferentes formatos, de algumas dezenas de vezes, em vários casos.

    Ao contrário do imagemagick, que é composto por vários executáveis, o graphicsmagick é um só executável (comando gm) onde o primeiro argumento é o utilitário desejado.

    Ou seja, enquanto que no IM vc faz
    $ convert imagem1.jpg imagem2.jpg

    No GM vc faz:
    $ gm convert imagem.jpg imagem2.jpg

    Para imagens grandes (milhares de pixels de lado) o ganho de performance do GM faz toda diferença, mais ainda se vc tiver dezenas ou centenas delas.

    Mas ainda desisti tanto do imagemagick quanto do graphicsmagick pois são extremamente lentos em relação ao ffmpeg. Como o que precisava era manipular frames de vídeos em tempo real, optei por ele (na verdade pelas suas bibliotecas, libav*).

    Só como exemplo, enquanto uma imagem jpg demorava cerca de 600ms para ser convertida com o GM (e uns 2seg com o IM), o ffmpeg fazia em menos de 50ms. Ou seja, muito rápido.

    Só tenho que confirmar se os números eram exatamente estes, pois não estou com os dados no momento. Mas era uma diferença absurda.

    Ficou aí a minha dica.

    Patola (usuário não registrado) em 7/12/2012 às 5:43 pm

    O meu problema com o imagemagick não é o desempenho (“performance” no seu anglicismo), e sim que algumas GIFs animadas ele costuma zoar. Depois vou tentar o gm.

    Já comparar com o ffmpeg é fora do alvo. O imagemagick tem um escopo bem diferente.

    anderson freitas (usuário não registrado) em 8/12/2012 às 6:24 am

    @Leandro Santiago,já testou assim? $ convert -quality 99 %03d.jpg,agora com redimencionamento $ convert *.jpg -resize 1920×1200! -quality 99 %03d.jpg

    Leandro Santiago (usuário não registrado) em 8/12/2012 às 10:58 am

    @Patola, o ffmpeg é capaz de fazer várias operações sobre imagens. Ele não trabalha só com áudio e vídeo. Sério. Dá pre redimensionar, converter, aplicar alguns filtros (como escrever na imagem, inverter cores, remover ruído, recortar, combinar diferentes imagens…), diminuir a qualidade, etc.

    O pessoal do libav (fork do ffmpeg) mantém esta página, que é em boa parte compatível com o ffmpeg:

    http://libav.org/libavfilter.html#Video-Filters

    Pra usar um filtro, é só usar o parâmetro, no ffmpeg, -vf.

    Tipo assim:

    $ ffmpeg -i imagem.jpg -vf ‘negate,scale=iw/2:ih/2′ imagem.png -sameq

    Isso converte uma imagem de jpg pra png, mantém a mesma qualidade e a imagem final tem metade do tamanho e as cores estão invertidas. Só o parâmetro -sameq que foi substituido por outro nas últimas versões. Só não lembro qual…

    O esquema de filtros do ffmpeg é bastante poderoso, e vc pode criar filtros bastante complexos (na forma de um grafo), mas nunca me dei bem com estes mais complexos.

    O problema é a documentação de boa parte disso não está bem documentada, exigindo que vc mergulhe em documentos obscuros para descobrir como faz.

    @anderson, o comando que digitei não faz nada, só converte uma imagem para uma igual :-) O que quiz demonstrar é que no graphicsmagick todos os comandos estão reunidos num só executável (é tipo um busybox da vida :-)), quando no imagemagick existem vários executáveis que, ao meu ver, é uma abordagem ruim.

    Novamente @Patola, que trauma que vc tem com anglicanismos, hein? Já pensou em procurar tratamento, meu filho? A língua é dinâmica e não muda por decreto, mas pelo próprio uso.

    O objetivo da língua não é ser fiel a um acordo rígido. O acordo deve ser informal e serve unicamente para permitir que os indivíduos que o adotam sejam capazes de se comunicar. Se você entendeu, por meio das minhas palavras, o meu pensamento (expresso por palavras), a linguagem funcionou.

    O próprio inglês evoluiu também com a incorporação de palavras e outras construções de vários tipos de línguas, como do latim e até do francês (como em resumé e fiancé).

    Patola (usuário não registrado) em 8/12/2012 às 12:55 pm

    @Leandro Santiago, eu só traduzi do seu anglicanismo. Perguntaria o mesmo a ti, qual o problema em usar palavras “nativas”? Por que dar predileção a uma importada? Por favor me recomende então algum doutor que trate de pessoas que se importam com a incorporação de palavras para conceitos já existentes em sua língua. Não sabia que era uma doença.

    Quando à tarefa de tratamento em batch de imagens, o Linux Action Show mostrou uma aplicação muito interessante: Phatch – e está nos repositórios do Ubuntu!

    Leandro Santiago (usuário não registrado) em 8/12/2012 às 1:40 pm

    @Patola, as vezes importamos por ser mais fácil. Não sei se isso vale para “performance” e “desempenho”, mas se houvesse uma palavra em outro idioma que representasse este conceito mas de uma forma mais fácil/enxuta e fosse compreendida por todos numa discussão, não veria problema algum no seu uso.

    Na questão da predileção, meu comentário teve 231 palavras, sendo que somente 2 delas eram a palavra performance. O que dá ~0,9% do texto total. Não creio que isto represente um perigo à língua portuguesa.

    Leandro Santiago (usuário não registrado) em 8/12/2012 às 1:41 pm

    hauahauha, mas porque mesmo estamos discutindo isso? :-)

    Paulo (usuário não registrado) em 8/12/2012 às 6:18 pm

    por ego…

    Abc (usuário não registrado) em 9/12/2012 às 9:51 am

    Eu costumo usar a linha de comando para lotes de imagens… Convert -resize AAAAxLLLL *.jpg

    Marcos (usuário não registrado) em 9/12/2012 às 2:05 pm

    “falava demais e sempre queria ter a última palavra em qualquer discussão.

    Como Eco fez o papel de distrair Hera enquanto Zeus se divertia com outras ninfas, ela recebeu um castigo. Perdeu o direito à própria voz, que tanto amava. Foi condenada a repetir eternamente a última palavra do que os outros falassem. (Marion Strecker)”

    Marcos (usuário não registrado) em 9/12/2012 às 2:05 pm

    Narciso é um jovem magnífico que se apaixona pela própria imagem refletida na água. Acabou consumido pelo amor-próprio e se tornou o nome da flor encontrada onde ele desapareceu.
    Somos todos Narcisos no Facebook, Orkut ou Instagram, quando publicamos fotos dos nossos sorrisos e melhores momentos.

    Eco é uma ninfa que amava os bosques e os montes, mas tinha um defeito: falava demais e sempre queria ter a última palavra em qualquer discussão.

    Como Eco fez o papel de distrair Hera enquanto Zeus se divertia com outras ninfas, ela recebeu um castigo. Perdeu o direito à própria voz, que tanto amava. Foi condenada a repetir eternamente a última palavra do que os outros falassem. (Marion Strecker)

Este post é antigo (2012-12-07) e foi arquivado. O envio de novos comentários a este post já expirou.