# Variables Automator.



## edfred (9 Décembre 2010)

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 : 


Une série d'images sélectionnées devront être renommées (ce point ne me pose pas de problème).
Placées dans un nouveau dossier (pas de soucis non plus)
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


----------



## Anonyme (10 Décembre 2010)

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*" 

```
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" !


----------



## edfred (10 Décembre 2010)

Bonjour.
Merci pour ces infos et l'aide apportée, je vais tester ce code au plus vite.
Je repasserai donner mon impression.


----------



## edfred (10 Décembre 2010)

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.


----------



## Anonyme (11 Décembre 2010)

Bonjour,



edfred a dit:


> 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é.

```
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
```


----------



## edfred (12 Décembre 2010)

Hé bien cool, je te remercie une fois de plus, c'est maintenant exactement ce je souhaitais.


----------

