ImageMagick

Quan feia servir bàsicament Windows vaig fer-me una macro de PaintShop Pro per a generar-me imatges petites (thumbnails) de les fotografies.

El meu procés de treball després de fer fotografies és el següent:

  1. Copiar les imatges de la (les) targeta (targetes) a un directori d’imatges no catalogades.
  2. Si hi ha imatges RAW, mirar-les i convertir-les a JPG. En aquest procés aprofito per esborrar les que tenen una qualitat tècnica deficient (essencialment imatges mogudes).
  3. Incorporar les imatges al catàleg, i moure-les al directori d’imatges catalogades.
  4. Fer les imatges petites per a veure-les al catàleg.

Els passos 1 i 2 són manuals, el 3 està automatitzat i el 4 és el que no tinc automatitzat en Linux.

Catalogo les fotografies amb un programa propi fet sota la plataforma Eclipse (concretament Java amb SWT, amb base de dades Derby). Per tant, d’entrada m’inclinava inicialment per una llibreria o utilitat en Java. M’he mirat una mica la JAI de Sun, però no he vist un ràpid how-to que m’evités endinsar-me unes quantes hores en la documentació oficial.

Fa uns anys vaig utilizar funcions python per a fer això mateix, però generava imatges de molt baixa qualitat.

Busco una mica més i trobo ImageMagick. En mitja hora he fet una rutineta curta en python que em compara el directori d’imatges grans i el d’imatges petites, i em crea totes les imatges petites que hi falten. Ja puc cridar-lo automàticament després del punt 3.

El codi python que faig servir és aquest:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
#llibreries
import sys
import os
import string
def afegirImatgesPetites (dirImatgesGrans, fitxersImatgesGrans, dirImatgesPetites, fitxersImatgesPetites):
for nomFitxer in fitxersImatgesGrans:
if len(nomFitxer) == 12:
try:
fitxersImatgesPetites.index (nomFitxer)
except ValueError:
parametres = ['convert' , os.path.join(dirImatgesGrans, nomFitxer), '-thumbnail', '200x200', os.path.join(dirImatgesPetites, nomFitxer)]
os.spawnvp(os.P_WAIT, parametres[0], parametres)
except:
print sys.exc_info()[0]
raise

#----------------------#
#- Programa principal -#
#----------------------#
# Recuperar els dos noms de directoris
dirImatgesGrans = sys.argv[1]
dirImatgesPetites = sys.argv[2]
fitxersImatgesGrans = os.listdir (dirImatgesGrans)
fitxersImatgesPetites = os.listdir (dirImatgesPetites)
afegirImatgesPetites (dirImatgesGrans, fitxersImatgesGrans, dirImatgesPetites, fitxersImatgesPetites)

Cal cridar-lo amb 2 paràmetres. El primer és el nom del directori que conté les imatges JPG originals, i el segon és el directori que conté les imatges petites.

La comprovació if len(nomFitxer) == 12és perquè només processi els fitxers amb un nom de 12 caràcters. Tots els fitxers de les fotografies catalogades segueixen aquest patró.

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *

Aquest lloc utilitza Akismet per reduir els comentaris brossa. Apreneu com es processen les dades dels comentaris.