Taggueur de photo : je vois pas comment faire le script

Pour tous ceux qui veulent aller plus plus dans les aspects techniques de Gimp.

Modérateur : Ze Techos

Répondre
slhuilli
Wilber en peluche
Messages : 3
Inscription : dim. juil. 13, 2008 1:05 pm
Contact :

Taggueur de photo : je vois pas comment faire le script

Message par slhuilli » dim. oct. 05, 2008 8:59 am

Bonjour,

Je démarre en ce moment l'apprentissage de GIMP (enfin apprentissage avancé") et a coté je bosse pour une asso qui tiens un journal web. Je fais énormément de photos pour eux et pour ne pas me confondre avec d'autres (et pour me faire un peu de pub), ils m'ont demander de "tagger" mes photos (petiute image a coller par au-dessus de mes photos).
Pour eux, je leur fait des photo d'évenements de ma ville (ville qui en regorge) et je dois avoir entre 200 et 500 photos a tagger par semaine, d'où la recherche d'un script
Mon script idéal serait avoir un modèle (image transparente sur mon disque dur) que je recopierais sur toutes les photos d'un répertoire. Bien qu'étant programmeur, je n'ai pas trop eu encore le temps de me pencher sur scheme. Est-ce possible d'une part de réaliser un tel script et d'autre part, quelqu'un aurait il un bout de script pour me dépanner ? je vous en remercie d'avance

TurboIII
Chef de meute
Messages : 31
Inscription : ven. janv. 04, 2008 4:14 pm
Localisation : St Fargeau 77

Message par TurboIII » sam. nov. 15, 2008 2:40 pm

Bonjour,

Premier point tu devrais faire tourner ton moteur de recherche pour chercher des script-fu déjà tout fait. La toile est une mine d'or.

Si tu es débutant en programmation, je te suggère de gouter au Python. Pour ma part le scheme c'est très difficile à comprendre. L'histoire des parenthèses est un facteur de complication d'analyse et la méthode d'écriture est loin d'être aisé à lire. L'énergie à dépenser est démesurée par rapport au résultat. J'ai déjà fait de la programmation en assembleur, basic, un language IBM il y a 20ans. Puis je suis passé par le turbo pascal c'était pas mal. Puis priorité oblige suis passé à autre chose. La photo m'a amené à GIMP et la version 2.4 au python. C'est quand même plus lisible.
Amuse toi à comprendre un script-fu
il ya une affaire de copyright dont tu peux t'inspirer pour du scheme. Mais perso je chercherai le truc en python
Sur site Gimpfr.org tu trouveras les ressources pour installer python et tu pourras ensuite chercher quelques greffons en python pour ton affaire
nom d'un programme python *.py

Code : Tout sélectionner

Freely distributed
;;
;; Version 1.0 by Pavel Antokolsky aka Zigmar (antokol@isdn.net.il)
;;
;; Version 1.1 Fufie (fufie@boblycat.org)
;;
;;             - Improved error-checking and undo works
;;             - Addded support for copyright-notice
;;             - Moved script to S-Fu/Decor
;;
;; Version 1.2 Fufie (fufie@boblycat.org)
;;
;;             - Added blur-effect on copyright-notice
;;               as suggested by Eugene

(define (script-fu-border-with-copyright aimg adraw ib-width ib-colour ob-width ob-colour
					 text font-name font-size font-colour blur-text
					 work-on-copy flatten-image)
    
    (let* ((type (car (gimp-drawable-type-with-alpha adraw)))
	   (img (if (= work-on-copy TRUE)
		    (car (gimp-image-duplicate aimg))
		    aimg))
	   (old-width (car (gimp-image-width img)))
	   (old-height (car (gimp-image-height img)))
	   (old-fg (car (gimp-palette-get-foreground)))
	   (border-width (+ ib-width ob-width))
	   (new-width (+ old-width (* border-width 2)))
	   (new-height (+ old-height (* border-width 2)))
	   )
      
      ;; Start undo, make it simple.
      (gimp-image-undo-group-start img)

      ;;Add space for the border ("canvas resize")
      (gimp-image-resize img new-width new-height border-width border-width)

      ;; Create new layer for the border
      (set! border-layer (car (gimp-layer-new img 
					      new-width 
					      new-height 
					      type
					      "Photo-border" 
					      100 
					      NORMAL
					      )))

      ;; Clear newly created layer
      (gimp-edit-clear border-layer)
      ;; Add it to image
      (gimp-image-add-layer img border-layer -1)

      ;; Outer border fill, if it is bigger than zero
      (cond ((> ob-width 0)
	     (gimp-rect-select img 
			       0 0 
			       new-width new-height 
			       REPLACE 
			       0 0)
	     (gimp-rect-select img 
			       ob-width ob-width 
			       (- new-width (* ob-width 2)) (- new-height (* ob-width 2)) 
			       SUB 
			       0 0) 
	     (gimp-palette-set-foreground ob-colour)
	     (gimp-edit-fill border-layer 0) 
	     ))
      
      ;; Inner border fill if width is > 0
      (cond ((> ib-width 0)
	     (gimp-rect-select img 
			       ob-width ob-width 
			       (- new-width (* ob-width 2)) (- new-height (* ob-width 2)) 
			       REPLACE 
			       0 0) 
	     (gimp-rect-select img 
			       border-width border-width 
			       old-width old-height
			       SUB 
			       0 0) 
	     (gimp-palette-set-foreground ib-colour)
	     (gimp-edit-fill border-layer 0) 

	     ))
      
      ;; add the text if the text has size
      ;; doing it very iteratively and unschemy
      
      (cond ((> (string-length text) 0)
	     (let ((text-size '())
		   (text-width '())
		   (text-height '())
		   (written-text '())
		   )
	       
	       (gimp-palette-set-foreground font-colour)
	       ;; get the extent of text when written out
	       (set! text-size (gimp-text-get-extents-fontname text font-size PIXELS font-name))
	       (set! text-width (car text-size))
	       (set! text-height (cadr text-size))

	       (set! written-text (gimp-text-fontname img
						      -1  ;; new layer
						      (- new-width text-width ob-width) ;; x-coord
						      (- new-height text-height) ;; y-coord
						      text
						      -1 
						      TRUE ;; anti-alias
						      font-size 
						      PIXELS ;; size is in pixels
						      font-name))

	       ;; if we're to blur anything, this is the time
	       (if (= blur-text TRUE)
		   (plug-in-gauss-rle TRUE img (car written-text) 1.5 TRUE TRUE))
	       
	       )))
      

      ;; flatten
      (if (= flatten-image TRUE) (gimp-image-flatten img))

      ;; Finalisation
      (gimp-selection-none img)
      (gimp-palette-set-foreground old-fg)

      ;; End UNDO
      (gimp-image-undo-group-end img)

      ;; Display our work
      (if (= work-on-copy TRUE) (gimp-display-new img))
      (gimp-displays-flush)
      ))

;; Default values are for really big pictures, scale down if you work with
;; small pictures.  Unfortunately these defaults can't figure out the size
;; of your image due to limitations in gimp.

(script-fu-register "script-fu-border-with-copyright"
		    _"<Image>/Script-Fu/Decor/Double Border with Copyright..."
		    "Add a border around an image with copyright note"
		    "Frank Ufie (fufie@boblycat.org) [Based on photo-border by: Zigmar (antokol@isdn.net.il)]"
		    "Fufie (was: Zigmar)"
		    "28/10/2004"
		    ""
		    SF-IMAGE "Input Image" 0
		    SF-DRAWABLE "Input Drawable" 0
		    SF-ADJUSTMENT _"Inner border width" '(8 0 2000 1 10 0 1)
		    SF-COLOR _"Inner border colour" '(255 255 255)
		    SF-ADJUSTMENT _"Outer border width" '(50 0 2000 1 10 0 1)
		    SF-COLOR _"Outer border colour" '(0 0 0)
		    SF-STRING _"Text" "\302\251 f ufie, 2004"
		    SF-FONT _"Font" "Utopia"
		    SF-ADJUSTMENT _"Font Size (pixels)" '(40 2 1000 1 10 0 1)
		    SF-COLOR _"Text colour" '(255 255 255)
		    SF-TOGGLE "Blur text" TRUE
		    SF-TOGGLE "Work on copy" FALSE
		    SF-TOGGLE "Flatten image" TRUE
		    )
Attention il a été écrit sous gimp 2.2 et je suis pas sur qu'il soit encore compatible 8) :? :o :D

slhuilli
Wilber en peluche
Messages : 3
Inscription : dim. juil. 13, 2008 1:05 pm
Contact :

Message par slhuilli » sam. nov. 15, 2008 7:19 pm

Merci pour ta réponse. Dans la précipitation, et comme je suis programmeur et que je developpe en PHP, je me suis penché sur la solution php-cli et les bibliothèque graphiques de PHP : GD. J'ai réussi à monter exactement ce que je voulais avec ca et a une vitesse incroyable. J'ai aussi utilisé une autre bibliotheque graphiqe imageMagick qui m'a apporté des érsultats sensationnels, notament en ligne de commande. Et comme je bosse en local, je fait a partir d'un fichier php un exec et ca roule. Peut etre pas tres propre mais repond a ce que je cherchais

sl

samj
Pro de la Gimp-Attitude
Messages : 711
Inscription : sam. oct. 29, 2005 4:16 pm

Re: Taggueur de photo : je vois pas comment faire le script

Message par samj » dim. nov. 16, 2008 12:21 am

Bonjour,
slhuilli a écrit :Bonjour,

... d'autre part, quelqu'un aurait il un bout de script pour me dépanner ? je vous en remercie d'avance

Le script existe (script-fu) ainsi que le traitement batch pour modifier ces 500 images (voir la documentation http://www.aljacom.com/~gimp/doc_gimp.html chapitre TRAITEMENT AVEC LE SCRIPT-FU WATERMARK-IT-F.SCM ).

Répondre