Freak, as in freakdom

Um blag sobre cultura, política, memes e… software livre!

Brincando com ImageMagick

without comments

Ontem recebi um e-mail com um link para um arquivo ZIP gigantesco contendo dezenas de arquivos JPEG. Cada arquivo era um scan de alta resolução de uma página dos originais do Estatuto e da Ata de Fundação do Garoa Hacker Clube. Meu objetivo era gerar um PDF a partir desses arquivos contendo uma imagem em cada página.

Consultando a documentação do convert, um frontend para o ImageMagick,  descobre-se facilmente como gerar um PDF:

$ ls -lh
total 12M
-rw-r–r– 1 rodrigo rodrigo 2.5M 2011-09-05 20:49 garoa 0.jpeg
-rw-r–r– 1 rodrigo rodrigo 2.6M 2011-09-05 20:50 garoa 1.jpeg
-rw-r–r– 1 rodrigo rodrigo 2.3M 2011-09-05 20:52 garoa 2.jpeg
-rw-r–r– 1 rodrigo rodrigo 1.8M 2011-09-05 20:53 garoa 3.jpeg
-rw-r–r– 1 rodrigo rodrigo 1.3M 2011-09-05 20:57 garoa 4.jpeg
-rw-r–r– 1 rodrigo rodrigo 1.5M 2011-09-05 20:56 garoa 5.jpeg
$ convert *.jpeg ghc_ata_fundacao_highres.pdf
$ ls -lh *.pdf
-rw-r–r– 1 rodrigo rodrigo 11M 2011-09-09 17:19 ghc_ata_fundacao_highres.pdf

No entanto, já que as imagens originais são grandes, o PDF também ficou enorme. Sendo assim, usei o mesmo convert para reduzir as imagens. Como havia várias imagens, pensei imediatamente em usar um for para não ficar repetindo comandos:

$ for i in *.jpeg; do mogrify -resize 30% $i; done

Como o leitor verá, esse comando não funcionou! Os arquivos tem um espaço no nome e o argumento é interpretado incorretamente na linha de comando pois o espaço não é “escaped“. Achei um workaround para isso usando a opção -exec do comando find. Além disso, usei o mogrify, que faz a mesma coisa que o convert mas sobrescreve o arquivo original:

$ find *.jpeg -exec mogrify -resize 42% {} \;
$ ls -lh
total 13M
-rw-r–r– 1 rodrigo rodrigo 252K 2011-09-09 17:20 garoa 0.jpeg
-rw-r–r– 1 rodrigo rodrigo 272K 2011-09-09 17:20 garoa 1.jpeg
-rw-r–r– 1 rodrigo rodrigo 213K 2011-09-09 17:20 garoa 2.jpeg
-rw-r–r– 1 rodrigo rodrigo 132K 2011-09-09 17:20 garoa 3.jpeg
-rw-r–r– 1 rodrigo rodrigo 107K 2011-09-09 17:20 garoa 4.jpeg
-rw-r–r– 1 rodrigo rodrigo 128K 2011-09-09 17:20 garoa 5.jpeg

E agora é só gerar o pdf com as imagens reduzidas:

$ convert *.jpeg ghc_ata_fundacao_lowres.pdf
$ ls -lh ghc_ata_fundacao_lowres.pdf
-rw-r–r– 1 rodrigo rodrigo 1.2M 2011-09-09 17:36 ghc_ata_fundacao_lowres.pdf

Written by Rodrigo R. Silva

setembro 9th, 2011 at 1:44 pm

Posted in Sem categoria