(define (script-fu-my_video_workflow image drawable source destination travail duree tps largeur hauteur couleur nettete) ; ; 1ere etape : ; ------------ ; Transformer toutes les photos à intégrer dans la video dans un carré avec un fond de couleur. ; Les photos sont sauvegardées dans le répertoire de travail au format xcf ; afin de ne pas générer de pertes jpeg. Elles portent un nom générique avec un index temporaire. ; (set! chiffres (cons-array 10)) (aset chiffres 0 "0") (aset chiffres 1 "1") (aset chiffres 2 "2") (aset chiffres 3 "3") (aset chiffres 4 "4") (aset chiffres 5 "5") (aset chiffres 6 "6") (aset chiffres 7 "7") (aset chiffres 8 "8") (aset chiffres 9 "9") (set! nombre (cons-array 5)) (aset nombre 0 1) ; unités (aset nombre 1 0) ; dizaines (aset nombre 2 0) ; centaines (aset nombre 3 0) ; milliers (aset nombre 4 0) ; dizaines de milliers (set! filelist (cadr (file-glob (string-append "" source "/" "*.*") 1))) (while filelist (set! filename (car filelist)) (set! image (car (gimp-file-load RUN-NONINTERACTIVE filename filename))) (set! drawable (car (gimp-image-flatten image))) (script-fu-my_web_workflow image drawable largeur hauteur 0 0 couleur couleur nettete 1) (set! theNewImageDrawable (car (gimp-image-get-active-drawable theNewImage))) ; ; Evaluation du numero dans la serie ; (set! numero_serie (string-append (aref chiffres (aref nombre 4)) (aref chiffres (aref nombre 3)) (aref chiffres (aref nombre 2)) (aref chiffres (aref nombre 1)) (aref chiffres (aref nombre 0)))) (set! outfile (string-append "" travail "/photo_1_" numero_serie ".xcf")) (if (< (aref nombre 0) 9) (begin (aset nombre 0 (+ (aref nombre 0) 1))) (begin (aset nombre 0 0) (if (< (aref nombre 1) 9) (begin (aset nombre 1 (+ (aref nombre 1) 1))) (begin (aset nombre 1 0) (if (< (aref nombre 2) 9) (begin (aset nombre 2 (+ (aref nombre 2) 1))) (begin (aset nombre 2 0) (if (< (aref nombre 3) 9) (begin (aset nombre 3 (+ (aref nombre 3) 1))) (begin (aset nombre 3 0) (aset nombre 4 (+ (aref nombre 4) 1)) ) ) ) ) ) ) ) ) (gimp-xcf-save RUN-NONINTERACTIVE theNewImage theNewImageDrawable outfile outfile) (gimp-image-delete image) (set! filelist (cdr filelist)) ) ; ; 2eme etape : ; ------------ ; Il faut maintenant créer l'ensemble des photos nécessaires ; (aset nombre 0 1) (aset nombre 1 0) (aset nombre 2 0) (aset nombre 3 0) (aset nombre 4 0) (set! filelist (cadr (file-glob (string-append "" travail "/" "photo_1_*.*") 1))) (set! filename (car filelist)) (set! image_debut (car (gimp-file-load RUN-NONINTERACTIVE filename filename))) (set! drawable_debut (car (gimp-image-get-active-drawable image_debut))) (set! image_temporaire (car (gimp-image-new largeur hauteur 0))) (set! drawable_temporaire (car (gimp-layer-new image_temporaire largeur hauteur 0 "background" 100 0))) (gimp-image-add-layer image_temporaire drawable_temporaire 0) (gimp-context-set-background couleur) (gimp-edit-fill drawable_temporaire BACKGROUND-FILL) (gimp-context-set-default-colors) (gimp-edit-copy drawable_debut) (gimp-edit-paste drawable_temporaire 0) (set! drawable_temporaire (car (gimp-image-flatten image_temporaire))) (gimp-image-delete image_debut) (set! filelist (cdr filelist)) (while filelist (set! filename (car filelist)) (set! image_fin (car (gimp-file-load RUN-NONINTERACTIVE filename filename))) (set! drawable_fin (car (gimp-image-flatten image_fin))) (set! total_images (+ (* tps duree) 1)) (set! nb_images 1) (while (< nb_images total_images) (set! numero_serie (string-append (aref chiffres (aref nombre 4)) (aref chiffres (aref nombre 3)) (aref chiffres (aref nombre 2)) (aref chiffres (aref nombre 1)) (aref chiffres (aref nombre 0)))) (set! outfile (string-append "" destination "/photo_" numero_serie ".ppm")) (if (< (aref nombre 0) 9) (begin (aset nombre 0 (+ (aref nombre 0) 1))) (begin (aset nombre 0 0) (if (< (aref nombre 1) 9) (begin (aset nombre 1 (+ (aref nombre 1) 1))) (begin (aset nombre 1 0) (if (< (aref nombre 2) 9) (begin (aset nombre 2 (+ (aref nombre 2) 1))) (begin (aset nombre 2 0) (if (< (aref nombre 3) 9) (begin (aset nombre 3 (+ (aref nombre 3) 1))) (begin (aset nombre 3 0) (aset nombre 4 (+ (aref nombre 4) 1)) ) ) ) ) ) ) ) ) ; (file-png-save RUN-NONINTERACTIVE image_temporaire drawable_temporaire outfile outfile 0 9 0 0 0 0 0) (file-ppm-save RUN-NONINTERACTIVE image_temporaire drawable_temporaire outfile outfile 1) (set! nb_images (+ nb_images 1)) ) (set! nb_images 1) (while (< nb_images (+ tps 1)) (set! image_intermediaire (car (gimp-image-duplicate image_temporaire))) (set! drawable_intermediaire (car (gimp-image-get-active-drawable image_intermediaire))) (gimp-edit-copy drawable_fin) (gimp-layer-set-opacity (car (gimp-edit-paste drawable_intermediaire 0)) (* (/ 100 tps) nb_images)) (set! drawable_intermediaire (car (gimp-image-flatten image_intermediaire))) (set! numero_serie (string-append (aref chiffres (aref nombre 4)) (aref chiffres (aref nombre 3)) (aref chiffres (aref nombre 2)) (aref chiffres (aref nombre 1)) (aref chiffres (aref nombre 0)))) (set! outfile (string-append "" destination "/photo_" numero_serie ".ppm")) (if (< (aref nombre 0) 9) (begin (aset nombre 0 (+ (aref nombre 0) 1))) (begin (aset nombre 0 0) (if (< (aref nombre 1) 9) (begin (aset nombre 1 (+ (aref nombre 1) 1))) (begin (aset nombre 1 0) (if (< (aref nombre 2) 9) (begin (aset nombre 2 (+ (aref nombre 2) 1))) (begin (aset nombre 2 0) (if (< (aref nombre 3) 9) (begin (aset nombre 3 (+ (aref nombre 3) 1))) (begin (aset nombre 3 0) (aset nombre 4 (+ (aref nombre 4) 1)) ) ) ) ) ) ) ) ) ; (file-png-save RUN-NONINTERACTIVE image_intermediaire drawable_intermediaire outfile outfile 0 9 0 0 0 0 0) (file-ppm-save RUN-NONINTERACTIVE image_intermediaire drawable_intermediaire outfile outfile 1) (gimp-image-delete image_intermediaire) (set! nb_images (+ nb_images 1)) ) (gimp-image-delete image_temporaire) (set! image_temporaire (car (gimp-image-new largeur hauteur 0))) (set! drawable_temporaire (car (gimp-layer-new image_temporaire largeur hauteur 0 "background" 100 0))) (gimp-image-add-layer image_temporaire drawable_temporaire 0) (gimp-context-set-background couleur) (gimp-edit-fill drawable_temporaire BACKGROUND-FILL) (gimp-context-set-default-colors) (gimp-edit-copy drawable_fin) (gimp-edit-paste drawable_temporaire 0) (set! drawable_temporaire (car (gimp-image-flatten image_temporaire))) (gimp-image-delete image_fin) (set! filelist (cdr filelist)) ) (set! total_images (+ (* tps duree) 1)) (set! nb_images 1) (while (< nb_images total_images) (set! numero_serie (string-append (aref chiffres (aref nombre 4)) (aref chiffres (aref nombre 3)) (aref chiffres (aref nombre 2)) (aref chiffres (aref nombre 1)) (aref chiffres (aref nombre 0)))) (set! outfile (string-append "" destination "/photo_" numero_serie ".ppm")) (if (< (aref nombre 0) 9) (begin (aset nombre 0 (+ (aref nombre 0) 1))) (begin (aset nombre 0 0) (if (< (aref nombre 1) 9) (begin (aset nombre 1 (+ (aref nombre 1) 1))) (begin (aset nombre 1 0) (if (< (aref nombre 2) 9) (begin (aset nombre 2 (+ (aref nombre 2) 1))) (begin (aset nombre 2 0) (if (< (aref nombre 3) 9) (begin (aset nombre 3 (+ (aref nombre 3) 1))) (begin (aset nombre 3 0) (aset nombre 4 (+ (aref nombre 4) 1)) ) ) ) ) ) ) ) ) ; (file-png-save RUN-NONINTERACTIVE image_temporaire drawable_temporaire outfile outfile 0 9 0 0 0 0 0) (file-ppm-save RUN-NONINTERACTIVE image_temporaire drawable_temporaire outfile outfile 1) (set! nb_images (+ nb_images 1)) ) (gimp-image-delete image_temporaire) ) (script-fu-register "script-fu-my_video_workflow" "/Script-Fu/Utils/My Video Workflow" "" "Stephan Peccini (stephan@photonature.fr)" "Stephan Peccini" "April 2005" "RGB* GRAY*" SF-IMAGE "Input Image" 0 SF-DRAWABLE "Input Drawable" 0 SF-DIRNAME "Source" "" SF-DIRNAME "Destination" "" SF-DIRNAME "Travail" "" SF-ADJUSTMENT "Duree par photo" '(5 1 10 1 1 0 1) SF-ADJUSTMENT "Trames par seconde" '(25 1 30 1 1 0 1) SF-ADJUSTMENT "Largeur Maximum" '(600 100 1000 100 100 0 1) SF-ADJUSTMENT "Hauteur Maximum" '(600 100 1000 100 100 0 1) SF-COLOR "Couleur du fond" '(255 255 255) SF-OPTION "Nettete" '(_"Refocus" _"Unsharp mask") )