Utilisation de GIMP 2.6.6 pour Mac OS X (sous X11) tel que téléchargé de gimp.org.
J'essaie d'automatiser un processus manuel ennuyeux avec script-fu. J'avais besoin d'analyser le nom du fichier image pour enregistrer diverses calques en tant que nouveaux fichiers à l'aide d'un suffixe sur le nom du fichier d'origine. P>
Mes tentatives originales sont passées comme ceci mais ont échoué car (String-Search. .) code> ne semble pas être disponible sous 2.6 (une modification du moteur de script?). P>
(if (re-match "^(.*)[.]([^.]+)$" filename buffer)
(set! basefilename (vector-ref buffer 1))
)
6 Réponses :
Gimp 2.6.6 Windows Vista SP2 P>
Extrait du nom de fichier d'origine sans son extension. P>
Erreur: Eval: variable non liée: re-matppe-nth em> p> blockQuote>
suggestion possible h2>
menu GIMP " filtres strong>"> " script-fu strong>"> " console forte > " p>
dans la zone d'entrée, collez la définition de fonction script-fu suivante Ensuite, appuyez sur la touche
ENTER FORT>: P> "screen"
Merci! La straillot était exactement ce que je cherchais.
Pas vraiment une solution correcte:
> (nom de fichier-basename "this.is.a.long.filename.jpg") p>
"Ceci" p> blockQuote>
Une meilleure implémentation: p>
xxx pré> p>
Si l'extension est manquante (Morph-FileName "" A.B. "" "Suivant") retourne ().
Ma version se divise le nom de fichier (F) dans les pièces délimitées par séparateur ("." Dans ce cas); gouttes la dernière partie; et re-combine-les avec séparateur à nouveau donc p> et p>
Pour ceux qui recherchent une vraie fonctionnalité de string-remplacer, voici une fonction que j'ai écrite pour une utilisation dans Script Fu
(define (string-replace strIn strReplace strReplaceWith) (let* ( (curIndex 0) (replaceLen (string-length strReplace)) (replaceWithLen (string-length strReplaceWith)) (inLen (string-length strIn)) (result strIn) ) ;loop through the main string searching for the substring (while (<= (+ curIndex replaceLen) inLen) ;check to see if the substring is a match (if (substring-equal? strReplace result curIndex (+ curIndex replaceLen)) (begin ;create the result string (set! result (string-append (substring result 0 curIndex) strReplaceWith (substring result (+ curIndex replaceLen) inLen))) ;now set the current index to the end of the replacement. it will get incremented below so take 1 away so we don't miss anything (set! curIndex (-(+ curIndex replaceWithLen) 1)) ;set new length for inLen so we can accurately grab what we need (set! inLen (string-length result)) ) ) (set! curIndex (+ curIndex 1)) ) (string-append result "") ) )
Merci beaucoup Philcolbourn pour avoir souligné une façon "simple" de le faire. Malheureusement, la fonction Butlast est obsolète: http://www.gimp.org/docs/script-fu-update .html # Imprété
Voici la version de Philcolbourn avec le remplacement suggéré: p>
comme dans gimp 2.8 "gimp-image-uri" doit être utilisé pour obtenir le nom de fichier de fichier JPG, mais gimp-image-get-urive offre le chemin complet, j'ai utilisé cette fonction pour extraire le seul Nom de la photo (sans le suffixe ".jpg"): p>
(let * (
(URINAME (voiture (gimp-image-get-uri)))
(Nom de base (voiture (revers (STRAFATUP (voiture (CLASHUP URINAME ».")) "/"))))
...
)
...
) p>