Redimensionando imagens pela linha de comando

Se você bate fotos com câmeras digitais e gosta de linha de comando este post é pra você. Recentemente comprei minha primeira câmera e descobri que fotos de 1.6 mega pixels (o tamanho que utilizo) ocupam espaço, muito espaço! Algumas passam dos 700kb. Resumindo, minha conta do Picasa não agüentaria muito se eu continuasse a subir essas imagens sem redimensioná-las antes.

E, sou obrigado a admitir, para redimensionar um álbum eu realmente utilizei o Gimp. Redimensionei todas as fotos, uma a uma, para uma resolução de 800 x 600 pixels. Economizei bastante espaço em disco, é verdade, mas perdi muito tempo, tempo que eu não queria voltar a perder. E quando não queremos perder tempo, qual a resposta? Claro, a linha de comando do Linux!

Encontrei um shell script capaz de redimensionar todas as imagens do diretório corrente para o tamanho que você desejar. Como sempre quero redimensionar as imagens para 800 x 600 não me preocupei em aperfeiçoar esse script a ponto de se poder especificar qual a dimensão final que as fotos devem ter. Como dizem os autores de livros, isso fica como um exercício para o leitor.

Os passos para termos um programa com essas características são os seguintes:

1) Instale o pacote imagemagick, que lhe proverá o programa mogrify, o qual é o responsável pelo redimensionamento das imagens

sudo apt-get install imagemagick # para Ubuntu

2) Crie em algum local do seu sistema de arquivos o script resizepics.sh com o seguinte conteúdo (eu o posicionei em /opt/resizepics.sh):

#!/bin/sh
for img in *.jpg; do echo "$img"; mogrify -resize 800x600 "$img"; done

3) Torne esse arquivo executável:

chmod a+x resizepics.sh

4) Torne esse arquivo disponível como um programa para o seu usuário (adicione ao arquivo ~/.bashrc a seguinte linha):

alias resizepics='/opt/resizepics.sh'

E pronto. Agora temos o comando resizepics disponível. Basta entrar no diretório onde estão nossas fotos e chamá-lo. Note que o programa irá redimensionar apenas os arquivos que terminem com a extensão .jpg (em letra minúscula). Se a sua máquina digital gera arquivos com letra maiúscula talvez você também queira um programa que renomeie todos esses arquivos de *.JPG para *.jpg. Para criar esse programa, que chamarei de renamepics, faça o seguinte:

1) Crie em algum local do seu sistema de arquivos o script renamepics.sh com o seguinte conteúdo (eu o posicionei em /opt/renamepics.sh):

#!/bin/sh
rename 's/JPG/jpg/' *JPG

2) Torne esse arquivo executável:

chmod a+x renamepics.sh

3) Torne esse arquivo disponível como um programa para o seu usuário (adicione ao arquivo ~/.bashrc a seguinte linha):

alias renamepics='/opt/renamepics.sh'

E pronto! Agora você pode aliar os dois programas. Dentro do diretório que possui imagens com extensão JPG a serem redimensionadas execute os comandos:

renamepics
resizepics

As imagens serão renomeadas e em seguida redimensionadas.

E agora, o que você vai fazer com todo esse tempo disponível, hein?


Inspecionando variáveis PHP com var_export

Em: 19/03/2008 Tags: PHP Comentários (1) Referencie do seu blog (Trackback)

Até pouco tempo minha única opção para imprimir o conteúdo de uma variável PHP era a função var_dump, que imprime o conteúdo de uma variável com uma saída bastante legível. O uso dessa função, porém, é bastante limitado uma vez que ela não retorna nenhum valor, simplesmente imprime o valor da variável passada como parâmetro. Imagine-se agora tentando encontrar aquele bug em uma aplicação Ajax. Você não pode utilizar var_dump para isso, pois essa saída não chegará até o lado do cliente. Ou você pode estar adotando uma prática de desenvolvimento onde tudo que você “loga” é escrito em um arquivo que você inspeciona continuamente com tail -f meu_arquivo_de_log.txt.

Para esse tipo de situações utilize var_export. O primeiro parâmetro da função é a variável que você deseja inspecionar. Por padrão, se o segundo parâmetro não for definido o conteúdo da variável será impresso, como acontece com var_dump. Mas se definirmos o segundo parâmetro como true, então o resultado dessa inspeção é retornado, e não impresso. Podemos então direcioná-lo para um arquivo de log, e então resolver problemas em aplicações Ajax mais facilmente.

O seguinte programa:

$numbers = array(1,2,3);
$tmp = var_export($numbers, true);
echo $tmp;

Resultará em:

array (
  0 => 1,
  1 => 2,
  2 => 3,
)

Outra diferença fundamental entre var_dump e var_export é que a segunda retorna código executável. Se você irá tirar proveito disso já é outra história.


Resolvendo problemas com PHPMyAdmin no Ubuntu

Em: 11/03/2008 Tags: Linux Comentários (3) Referencie do seu blog (Trackback)

Já virou rotina: após instalar o PHPMyAdmin via apt-get no Ubuntu aponto meu navegador para http://localhost/phpmyadmin esperando ver o sistema já funcionando, mas nada. O diretório nem está presente em /var/www. E o mais estranho é que isso funciona em algumas instalações do Ubuntu que fiz, mas não nas mais recentes…

Solução que descobri hoje:

sudo cp -r /usr/share/phpmyadmin/ /var/www/phpmyadmin

Agora aponte seu navegador para http://localhost/phpmyadmin. Você deve ver a tela de login do sistema.