• Anúncios

Reduzir fotos auto-magickamente para upload

O nome diz quase tudo. O cantinho dos fotógrafos.

Moderador: Moderadores

Reduzir fotos auto-magickamente para upload

Mensagempor rifkind » terça mai 31, 2011 09:55

No evento Geo-Photowalk – Cascais, na hora mágica, o MAntunes referiu que tinha havido alterações no tamanho máximo permitido para as fotos nos logs.

Na altura, não era bem certo qual o novo tamanho...

Estive a fazer alguns testes rápidos e consegui fazer o upload de uma foto com 195906 bytes, cerca de 191KB, sem disparar a redução automática o que é mais do que os 175KB anteriores. Palpita-me que o limite seja 200000 bytes, mas não consegui arranjar uma imagem com esse limite preciso. Uma com 200605 bytes, foi reduzida.

Para fazer a redução de forma automática, tenho ensaiado com algum sucesso o programa ImageMagick, com um pequeno batch file. O geo-amd já tinha falado nele neste post, mas não sei se foi com o método que descrevo. :)

Bom, este método é para Windows, mas pode facilmente ser adaptado para Linux:
  • obtenham o ImageMagick para Windows, versão portable (vem num zip):
    http://www.imagemagick.org/script/binar ... a5#windows
  • coloquem os ficheiros numa pasta (chamada IM, por exemplo) na raiz do disco onde costumam trabalhar com as fotos. Pode ser um disco externo.
  • Criem um pequeno ficheiro batch (chamado resize.bat, por exemplo), com as seguintes linhas:
    Código: Selecionar todos
    IF NOT EXIST Small md Small
    /im/mogrify -resize "1024x1024>" -define jpeg:extent=197000 -path Small *.jpg
Para usar:
  • Coloquem as fotos que querem carregar, numa pasta no mesmo disco onde têm o ImageMagick. Eu costumo fazer isso exportando as fotos do
  • Picasa com um tamanho de 1024x768.
  • Copiem o ficheiro batch que criaram, para essa pasta.
  • Executem o ficheiro batch. Depois de algum processamento, as fotos com o tamanho reduzido ficarão numa pasta chamada "Small".

Depois da configuração inicial, o processo normal é bastante rápido. Exportar fotos, copiar batch, executar.

Como funciona?
A base do funcionamento é mesmo o comado mogrify, do ImageMagick. Este modifica uma ou mais imagens. Aqui uso as opções:
  • -resize "1024x1024>" : redimensionar imagem, para os tamanhos máximos "1024x1024", mas só se a imagem fôr maior do que eles (">")
  • -define jpeg:extent=197000 : itera (internamente) vários parâmetros de qualidade, para tentar obter um tamanho final mais aproximado ao indicado. Como o tamanho é aproximado, temos de indicar um valor abaixo do limite máximo que pretendemos, para evitar que o máximo seja ultrapassado.
  • -path Small : coloca os ficheiros resultantes dentro de uma directoria chamada "Small"

Espero que seja útil. Se tiverem mais ideias, mandem! :)
rifkind
Site Admin
 
Mensagens: 1325
Registado: terça jun 24, 2003 18:32

Re: Reduzir fotos auto-magickamente para upload

Mensagempor geo-amd » terça mai 31, 2011 12:54

Nunca apresentei a minha solução (para Linux) porque não sabia como adaptá-la ao Windows. Mas agora vou mostrar o meu script, porque pode ser que alguém possa aproveitar de lá algo de útil. Já corrigi o tamanho ideal das imagens de 170 para 200 Kb.

Como quero ter controlo sobre as opções de redimensionamento, eu mesmo implemento um ciclo (loop) que procura obter uma imagem com tamanho próximo do desejado através de tentativa e erro. As opções que usei no comando "convert" do ImageMagick permitem-me obter uma qualidade que, subjetivamente, é cerca de 95% da que obtenho no GIMP. Vale a pena pagar este preço de 5% pela automação do redimensionamento das fotos.

Eis o script:
Código: Selecionar todos
#!/bin/bash
for infile in [0-9]*/[0-9]*[jJ][pP][gG]
do

outfile=${infile/\/// }
quality=80
maxsize=199990
size=$((maxsize+1))
echo "$infile"
while [ $size -gt $maxsize ]
do
    convert "$infile" -type optimize -unsharp 1 -quality $quality -resize "1024x1024>" -strip "$outfile"

    size=$(stat --printf="%s\n" "$outfile")
    echo $quality $size
    if [ $size -gt 300000 ]; then
        quality=$((quality-25))
    elif [ $size -gt 240000 ]; then
        quality=$((quality-15))
    else
        quality=$((quality-5))
    fi
done

done
#Version: ImageMagick 6.4.5 2009-06-04 Q16 OpenMP http://www.imagemagick.org

A segunda linha do script, que começa por "for", tem a ver com a forma como armazeno as minhas fotos (ver caixa, abaixo). Só são redimensionadas fotos cujo nome comece por um algarismo e se encontrem dentro de diretorias cujo nome também comece por um algarismo. Tudo o resto não é alterado.

Código: Selecionar todos
20110521 odivelas
    20110515.01 vamos limpar rio da costa_ribeira de odivelas
        00 foto final de grupo.jpg
        01 os primeiros.jpg
        02 logbook.jpg
        03 parque.jpg
        04 em ação.jpg
        05 em ação.jpg
        ...
        img_0006.jpg
        img_0007.jpg
        img_0015.jpg
        img_0018.jpg
        img_0024.jpg
        img_0052.jpg
        img_0082.jpg
        img_0087.jpg
    20110515.02 á nora dnf
    20110515.03 parque urbano do silvado
    20110515.04 palacete do século xviii
    20110515.05 as meninas d'odivelas
    20110515.06 quinta da memória
    20110515.07 padrão do senhor roubado
    20110515.08 mala-posta
    20110515.09 olival basto dnf
    20110515.10 muralha do século xix
    lixo
Avatar do Utilizador
geo-amd
Extra Large
 
Mensagens: 1838
Registado: segunda mar 01, 2010 11:04
Localização: Costa da Caparica

Re: Reduzir fotos auto-magickamente para upload

Mensagempor MAntunes » sexta jun 10, 2011 12:59

Agora já posso olhar para este tema com tempo! Irei experimentar a solução proposta pelo Nuno já nos próximos uploadas. Obrigado! ;)
Avatar do Utilizador
MAntunes
Extra Large
 
Mensagens: 4796
Registado: terça abr 22, 2003 20:56
Localização: Lisboa, Portugal

Re: Reduzir fotos auto-magickamente para upload

Mensagempor MAntunes » domingo jun 12, 2011 15:56

Não consegui que o script no Nuno funcionasse...


Tenho o script assint;

Código: Selecionar todos
IF NOT EXIST Small md Small
/im/mogrify -resize "1024x1024" -define jpeg:extent=197000 -path Small *.JPG
pause


E deu o seguinte erro;

SH_03 2011-06-12 16.51.jpg
SH_03 2011-06-12 16.51.jpg (184.35 KiB) Visualizado 2350 vezes
Avatar do Utilizador
MAntunes
Extra Large
 
Mensagens: 4796
Registado: terça abr 22, 2003 20:56
Localização: Lisboa, Portugal


Voltar para Fotografia

Quem está ligado:

Utilizador a ver este Fórum: Nenhum utilizador registado e 1 visitante