まこと の ブログ

MaKoTo no burogu — Journal de bord…

Aller au contenu | Aller au menu | Aller à la recherche

dimanche, 4 juillet 2010

Automatiser des tâches avec Gimp

Je vous livre ici la méthode qui me permettra de gagner du temps lors de longues séries de scan !
Sauf que j'ai dû investir beaucoup de temps pour chercher, trouver, avoir cru comprendre, re…rechercher, et finir par comprendre… J'y aurai passé la journée !!
Mais le retour sur cet investissement devrait être plus que positif rapidement ^^

Pour la petite histoire, jusqu'à maintenant, lorsque je scannais des pages, je faisais une pré-numérisation, suivie d'un cadrage.
Ensuite, le scan à 300dpi… long, avec le Lexmark.
Une fois l'image débarquée dans Gimp, je re-cadrais l'image au pixel prés, puis j'appliquais un flou gaussien (Horizontal 1, Vertical 1, RLE), afin d'atténuer la trame d'imprimerie.
Et enfin, Enregistrement de l'image en JPEG à 85% de qualité, en lui donnant le nom adéquat.
J'arrivais à gagner un peu de temps en faisant la pré-num d'une autre page durant les opérations avec Gimp pour la précédente… mais que de temps perdu !!

Maintenant, ça se déroulera de cette manière :

  1. Scan directement de la page à la taille maximale,[1] en demandant à Xsane d'enregistrer les images avec un schéma de nom de fichier prédéfini, en incrémentant de 1 le N° à chaque nouveau scan. (Qualité du JPEG renseignée dans le paramètres par défaut à 100%)
  2. Une fois toutes les pages scannées, exécution d'une commande Gimp qui va se charger d'appliquer le flou gaussien à l'ensemble des fichiers, en les enregistrant en JPEG 85%.

Et… c'est tout :) Moins de cliques de souris et plus rapide avec le scanner hp !

Bref, voici donc comment faire :

  • On va demander à Gimp d'appliquer un flou gaussien (Horizontal 1, Vertical 1, RLE) sur tous les fichiers JPEG d'un dossier, grâce à un Script-fu.

Créer un fichier texte contenant ceci :

(define (flou-pour-joypad pattern
                          Horizontal
                          Vertical
                          RLE) ;définition de la fonction avec les variables demandées dans la commande

	(let* ((filelist (cadr (file-glob pattern 1))))
		(while (not (null? filelist))

	(let* ((filename (car filelist))
		(image (car (gimp-file-load RUN-NONINTERACTIVE filename filename))) ; chargement de l'image
		(drawable (car (gimp-image-get-active-layer image)))) ;on récupère le calque actif
		(plug-in-gauss RUN-NONINTERACTIVE image drawable Horizontal Vertical RLE) ;Flou gaussien     

		(gimp-file-save RUN-NONINTERACTIVE image drawable filename filename) ;on sauve
		(gimp-image-delete image))
		(set! filelist (cdr filelist)))))

L'enregistrer dans le dossier «scripts» de Gimp (le nom du fichier importe peu, c'est flou-pour-joypad qui servira…)
Chez moi c'est : /home/makoto/.gimp-2.6/scripts/flou-joypad.scm

  • Puis on va appeler ce script par une commande depuis un terminal.

Se placer dans un dossier de test, avec quelques images JPEG, et exécuter :

gimp -i -b '(flou-pour-joypad "*.jpg" 15 15 1)' -b '(gimp-quit 0)'

Il doit être renvoyé ceci lorsque l'opération est achevée.

batch command executed successfully

Aller voir les images, elles doivent être bien floue !

gimp-save.png Les fichier auront été sauvés en JPEG 85% à condition que ce soit la valeur par défaut de votre Gimp!!!!






Pour encore se faciliter la vie, on pourra cliquer sur ce petit script pour lancer cette opération de «GIMP Batch Mode» où «traitement par lot» sans taper de commande.
Créer un fichier gimp-joypad, avec ça dedans :

#!/bin/bash
gimp -i -b '(flou-pour-joypad "*.jpg" 1 1 1)' -b '(gimp-quit 0)'

Ne pas oublier de rendre le fichier exécutable !
Changer les valeurs numériques, pour personnaliser l'effet, respectivement : Valeur Horizontal, Valeur Vertical, 1=RLE 0=IIR)



J'aurais donc trouvé un modèle qui Marche ! depuis ce lien http://www.gimp.org/tutorials/Basic_Batch/, malgré de nombreux essais depuis d'autres sites…
Avec cela j'ai fini par comprendre, alors que J'ai passé des heures à me demander pourquoi la commande me renvoyait toujours :

batch command experienced an execution error

Qu'elle avait besoin qu'on lui passe les valeurs numériques, et que les mettre dans le scrip-fu ne fonctionnait pas… enfin, quelque chose comme ça ^^; c'est qu'en 8 heures de bidouilles il s'en passe des trucs !

Note

[1] plus besoin de recadrer, les magazines suivant sont un peu plus grand que du A4

dimanche, 20 juin 2010

Enregistrer périodiquement une émission de WebRadio

Il y a des heures où passent de bonnes émissions sur le web, mais on n'est pas toujours disponible à ces moments… voire pire, on ne dispose pas du matériel informatique adéquat, puisqu'il n'est pas possible d'écouter avec un poste radio.

Ma solution consiste donc à enregistrer le flux de mon choix, à heure fixe, grâce à un ordi connecté 24/24, en l'occurrence, mon serveur web, afin de récupérer les fichiers et les coller dans mon lecteur de poche ou simplement écouter sur un ordi…

On va utiliser mplayer (apt-get install mplayer) et se baser sur les commandes types données sur ce site pour écrire ce script :

/home/makoto/scripts/ScriptRadio.sh

#!/bin/sh
DATE=$(date +%d-%m-%y)

mplayer -dumpstream -dumpfile /home/makoto/Radio/emission-$DATE.mp3 -nocache -playlist http://81.136.235.140:8000/stream.mp3.m3u

Le rendre exécutable par

$ chmod +x /home/makoto/scripts/ScriptRadio.sh

Puis automatiser la tâche en ajoutant dans crontab

# vi /etc/crontab
# m h dom mon dow user	command
# ScriptRadio pour enregistrer le dimanche de 10h30 à 12h
30 10   * * sun  makoto /home/makoto/scripts/ScriptRadio.sh
1  12   * * sun  makoto killall mplayer


Toutes les semaines on retrouve alors un nouveau fichier avec la date du jour :
/home/makoto/Radio/emission-06-06-10.mp3
/home/makoto/Radio/emission-13-06-10.mp3
/home/makoto/Radio/emission-20-06-10.mp3

page 2 de 2 -