miércoles, 15 de febrero de 2012

Linux: Comprimir JPG/PNG , crear PDF a partir d'imatges JPG/PNG i conversió entre formats.


Abans que res recomano fer copies dels JPG i PDF a manipular ja que si ens equivoquem amb el tractament, podríem sobreescriure els nostres fitxers originals.

1) Crear PDF's a partir d'imatges

El mètode que feia servir abans era a través del GIMP ( Archivo / Crear / Multiple PDF (o algo així )) però malauradament amb la versió 2.7.5 ja no hi és aquesta opció. En el seu lloc hi ha la comanda convert (que podem trobar als repos de la Debian al paquet imagemagick encara que potser també necessitarem el paquet ghostscript). El funcionament per crear un PDF a partir d'imatges és senzill:

xddxdd@debian:~$ convert 1.jpg 2.jpg nom.pdf

xddxdd@debian:~$ convert *.jpg nom.pdf

A l'utilitzar la primera comanda hem d'anar amb molt de compte a posar de paràmetre el nom del PDF, si no reescriurem la ultima imatge com a arxiu PDF i la borrarem (epic fail).

Si vulguéssim crear un PDF amb les imatge JPG però rotant-les X graus (Per exemple 90º):

xddxdd@debian:~$ convert -rotate 90 *.jpg nom.pdf

Es clar que potser també ens interessaria el pas invers: Obtenir imatges d'un PDF. Llavors:

xddxdd@debian:~$ convert nom.pdf nom_base_de_les_imatges.jpg

IMPORTANT: Per defecte el DPI és 72, la qual cosa vol dir una resolució d'imatge molt pobre. Podem modificar-lo amb el paràmetre -density:

xddxdd@debian:~$ convert -density 300 nom.pdf nom_base_de_les_imatges.jpg

Ara la qualitat ja és més bona.

Per últim indicar que es poden fer afegir JPG's a un PDF. Ho podem fer així.

xddxdd@debian:~$ convert imatge.jpg nom_pdf_base.pdf nom_pdf_final.jpg

Fixem-nos-hi que la imatge JPG s'afegeix per davant o per darrere del PDF segons si posem el nom del JPG abans o el posem després del PDF. En l'exemple anterior la imatge aniria davant ja que l'hem posat davant de nom_pdf_base.pdf

Tenim el mateix problema amb la qualitat que també solventarem amb el paràmetre -density:

xddxdd@debian:~$ convert -density 300 imatge.jpg nom_pdf_base.pdf nom_pdf_final.jpg

Tenim el mateix problema amb la qualitat que també solventarem amb el paràmetre -density:


2) Comprimir imatges (JPG i PNG)

JPG

La comanda és senzilla:

xddxdd@debian:~$ convert -quality 40 * Imatge.jpg

Converteix tots els fitxers que hi ha al directori una qualitat del 40% i els guarda a nous fitxers que comencen per Imatge-. També podria haver utilitzat *.jpg o *.jpeg en comptes de *.

IMPORTANT: Deixo una comanda de força utilitat que comprimeix els fitxers i automàticament crea el PDF.

 xddxdd@debian:~$ convert -quality 40 * Imatge.jpg ; convert Imatge*.jpg Document.pdf

Utilitant punt i coma fem que el segon procés convert s'executi quan acabi el primer.

PNG

Cal tenir el paquet pngquant. La comanda és:

xddxdd@debian:~$ find ./ -name "*.png" -exec pngquant --quality 1-2 {} \;

3) Conversió entre formats

Cal tenir el paquet imagemagick. La comanda és:

JPG a PNG

xddxdd@debian:~$ find ./ -name "*.jpg" -exec mogrify -format png {} \;        

PNG a JPG

xddxdd@debian:~$ for i in *.png ; do convert "$i" "${i%.*}.jpg" ; done
       

No hay comentarios: