Variables Automator.

edfred

Membre confirmé
5 Février 2010
10
2
Bonjour.
J'ai commencé à étudier un peu automator. Super…
Je cherche à redimentionner des images dans un processus automator si et seulement si elles sont plus grandes qu'une certaine taille déterminée j'imagine dans une variable.
Comment créer cette variable et l'intégrer au processus.

Le processus en entier devrait faire ceci :

  1. Une série d'images sélectionnées devront être renommées (ce point ne me pose pas de problème).
  2. Placées dans un nouveau dossier (pas de soucis non plus)
  3. Sélectionner dans ce nouveau dossier les images d'une taille supérieure à une taille définie (p.ex + de 600 px sur le plus grand côté), les copier, les renommer en ajoutant un préfixe et les redimensionner en tant que miniatures (vignettes). C'est là que je bloque.
Avis aux spécialistes d'Automator et Applescript.
Merci pour votre éventuelle aide.

Eddy
 
Bonjour,

Si je comprends bien, vous voulez créer des vignettes (nom du fichier original + suffixe + extension) avec des images plus grandes d'une certaine dimension
Si c'est ça, voici la solution :

Ajoute l'action "Exécuter un script AppleScript" après l'action qui récupère le chemin des images du nouveau dossier.

copie et colle ce script dans l'action "Exécuter un script AppleScript"
Bloc de code:
on run {input, parameters}
	set t_suffix to "_tn" -- le suffixe de la vignette
	set pix_img to 600 -- la largeur ou hauteur d'une image doit etre  plus grand que ce nombre
	set pix_Vign to 120 -- le nombre de pixel de la vignette (selon le coté le plus grand )
	
	repeat with i in input
		do shell script "t_file=" & (quoted form of POSIX path of i) & "
var=`sips  -g pixelWidth -g pixelHeight  \"$t_file\"  | /usr/bin/awk ' /pixel/ {if ($NF > " & pix_img & ") {n = 1}} END {print n}'`
if [ $var == 1 ];then /usr/bin/sips -Z  " & pix_Vign & " -s formatOptions 95 --out  \"${t_file%.*}" & ( t_suffix) & ".${t_file##*.}\" \"$t_file\" ;fi"
	end repeat
	
	return input
end run

Ce que vous pouvez modifier dans le script :
Dans la première ligne, le suffixe de la vignette
Dans la deuxième ligne, le nombre de pixels sur le plus grand côté
Dans la troisième ligne, le nombre de pixels (taille de la vignette)

Vous pouvez modifier le nombre après -s formatOptions , c'est la qualité en pourcentage.

Note du modo : On va déménager, parce qu'Applications n'est pas l'endroit pour parler de ça ! Comme précisé dans cette annonce "à lire avant de poster", Automator, on en parle dans le forum où on parle de l'application à automatiser. Les images, c'est dans "Arts graphiques", mais là, vu qu'on embraye sur AppleScript, on va aller dans "Développement sur Mac" !
 
Eh ben écoute (ou lis plutôt) Je te remercie infiniment, c'est exactement ce que je souhaite.
Disons que pour abuser un peu, j'aurais préféré un préfixe qu'un suffixe. J'ai toutefois tenté de renommer la variable suffix par prefix et tenté de modifier la position par rapport au nommage mais je n'y parviens pas. Je ne comprends pas très bien l'applescript :(

En tous ca le script est parfait.

Encore merci. ;)
 
Bonjour,

j'aurais préféré un préfixe qu'un suffixe. J'ai toutefois tenté de renommer la variable suffix par prefix et tenté de modifier la position par rapport au nommage mais je n'y parviens pas.
Désolé c'est mon erreur (tu avais bien écrit préfixe dans ton premier message), je me suis trompé avec l'action qui crée les vignettes dans Automator (qui lui renomme avec un suffixe).

Voici le script corrigé.
Bloc de code:
on run {input, parameters}
	set t_prefix to "_tn" -- le préfixe de la vignette
	set pix_img to 600 -- la largeur ou hauteur d'une image, il doit etre  plus grand que ce nombre
	set pix_Vign to 120 -- le nombre de pixel de la vignette (selon le coté le plus grand )
	
	repeat with i in input
		do shell script "t_file=" & (quoted form of POSIX path of i) & "
var=`/usr/bin/sips -g pixelWidth -g pixelHeight  \"$t_file\" | /usr/bin/awk ' /pixel/ {if ($NF > " & pix_img & ") {n = 1}} END {print n}'`
if [ $var == 1 ];then /usr/bin/sips -Z  " & pix_Vign & " -s formatOptions 95 --out \"${t_file%/*}/" & (t_prefix) & "${t_file##*/}\" \"$t_file\" ;fi"
	end repeat
	
	return input
end run