Mac, Apple, AppleScript, Photoshop – Manipuler Photoshop à l’aide de AppleScript pour exécuter des actions par lot


On oublie trop souvent que sur Mac et avec les produits Adobe, on peut faciliter la gestion des contenus médias à l’aide de script de traitement par lot. Dans cet article, on va voir comment utiliser un script, qui plus tard sera compilé en .app pour effectuer des traitements en masse sur des images.

Enregistrer une action sous Photoshop

On va enregistrer un traitement simple sous Photoshop. Chaque photo sera diminué en taille à 20% puis lui appliquer le filtre « Solarize », cela nous permettra de nous rendre compte facilement que les changements opérés par le script fonctionnent.

Avant le traitement
Mac, Apple, AppleScript, Photoshop - Manipuler Photoshop à l'aide de AppleScript pour exécuter des actions par lot

Après le traitement
Mac, Apple, AppleScript, Photoshop - Manipuler Photoshop à l'aide de AppleScript pour exécuter des actions par lot

Utiliser le script

Voici le code du script, nous allons pointer vers l’action save_20_percent_solar dans un répertoire d’actions nommé hecube. Attention, le nom de l’action comme celle du répertoire est sensible à la casse.

La ligne en question

do action "save_20_percent_solar" from "hecube"

Les commentaires en AppleScript
Pour information, les commentaires en AppleScript s’écrivent de cette manière (* Ceci est un commentaire en AppleScript *) ou de la sorte --- Ceci est un commentaire en AppleScript

L’action qui va être exécuté par Photoshop à l’aide du script
Mac, Apple, AppleScript, Photoshop - Manipuler Photoshop à l'aide de AppleScript pour exécuter des actions par lot

Le code dans l’éditeur AppleScript de Mac
Mac, Apple, AppleScript, Photoshop - Manipuler Photoshop à l'aide de AppleScript pour exécuter des actions par lot

L’export au format .app du script
Mac, Apple, AppleScript, Photoshop - Manipuler Photoshop à l'aide de AppleScript pour exécuter des actions par lot

Le script dans sa totalité

Voici la source complète du script.

 
	(*
	This the version to handle action in photoshop for a bunch of jpg
	From http://social.hecube.net/
	*)
 
	(*
 
	Here is the list of voices available on mac:
	* Agnes - female voice
	* Albert - male voice
	* Bad News - singing funereal voice
	* Bahh - an old male voice
	* Bells - singing, ringing bell effect voice
	* Boing - a springy effect voice
	* Bruce - male voice
	* Bubbles - bubble effect voice
	* Cellos - singing voice
	* Deranged - a nervous voice
	* Fred - male voice
	* Hysterical - laughing voice
	* Junior - young boy's voice
	* Kathy - female voice
	* Pipe Organ - singing organ effects voice
	* Princess - young girl's voice
	* Ralph - deep male voice
	* Trinoids - alien voice
	* Victoria - female voice
	* Whisper - whispering voice
	* Zarvox - alien voice
	*)
 
 
 
	-- This chooses the master folder where all your sub folders with images are stored
	-- Choose your Master Folder for this batch job
	-- using "Fred"
	say "Choose your Master Folder for this batch job" using "Victoria"
	set raw_folder to choose folder
 
	-- This chooses the destination folder where all your result images are stored
	-- using "Albert"
	say "Choose your destination Folder for the processed files" using "Victoria"
	set live_folder to choose folder
 
	-- This checks when the batch started and stores the date value
	set startTime to time of (current date)
 
	-- This the file counter
	set fileCounter to 0
 
 
		tell application "Finder"
			set itemList to files in raw_folder
		end tell
 
		repeat with j from 1 to (number of itemList)
		set fileCounter to fileCounter + 1
		end repeat
 
		repeat with an_item in itemList
			tell application "Finder"
				set current to an_item as alias
			end tell
 
			tell application "Adobe Photoshop CS4"
				activate
				open current
				set this_image to current document
 
				(*  
				Choose your action "save_20_percent_solar" in actions directory "hecube"
				Careful this case sensitive
				 *)
				do action "save_20_percent_solar" from "hecube"
 
 
				tell current document
					save as JPEG in live_folder
					close
				end tell
			end tell
		end repeat
 
 
		set endTime to time of (current date)
 
		(* end *)
		say "The job is done, please have a look to the destination folder. The operation took  " & endTime - startTime & " seconds. The directory contains " & fileCounter & " files." using "Victoria"
 
		(* Dialog box if needed *)
		(* 
		display dialog "nThe operation took  " & endTime - startTime & " seconds" & ".nThe directory contains " & fileCounter & " files.n"
		*)

En savoir plus