Come sviluppare plug-in per Photoshop

April 15, 2011

Negli ultimi mesi mi è capitato di dover smanettare con Adobe Photoshop CS5 per creare un Plug-in. Innanzitutto è quasi impossibile scrivere un Plug-in da zero, perquesto la cosa migliore è andare sul sito della adobe e scaricare le sdk per Photoshop, che si trovano all’indirizzo

http:/www.adobe.com/devnet/photoshop/sdk.html .

Su che ambiente lavoriamo?

Se si lavora su Windows è consigliato utilizzare Visual studio mentre su MacOsX è consigliato l’utilizzo di Xcode. E’ sicuramente possibile utilizzare altre ide ma renderebbe la parte di building del progetto molto più complesso.

Da dove iniziamo?

Io personalmente ho iniziato a lavorare prendendo in esempio il filtro dissolve. Sia nella versione Windows che per Mac si aprire il file del progetto che contiene all’interno svariate configurazioni per la nostra IDE. Si può scegliere infatti di compilare il codice sia per architetture a 32 che a 64bit.

Il Main

Essendo il plug-in una libreria non è eseguibile, abbiamo quindi 2 problemi:

1) Da dove parte? Qual’è il MAIN?

2) Come facciamo ad eseguire un debug?

Iniziamo subito con il primo problema, il main nel nostro caso è contenuto all’interno del file “Dissolve.cpp” allo stesso modo il main è sempre contenuto all’interno del file cpp con lo stesso nome del progetto. In particolare il plug-in una volta lanciato da Photoshop lancia tutte le sue istruzioni a partire dal metodo “DLLExport MACPASCAL void PluginMain” .

All’interno del codice del main notiamo uno switch, questo è il cuore del plug-in

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
switch (selector)
{
case filterSelectorAbout:
break;
case filterSelectorParameters:
break;
case filterSelectorPrepare:
break;
case filterSelectorStart:
break;
case filterSelectorContinue:
break;
case filterSelectorFinish:
break;
default:
break;
}

Il codice del Main viene chiamato più volte con diversi  Selector, vediamo nello switch c’è “about”, “Parameters”, “Prepare”, “start”, “continue” e “Finish”.  Questi sono gli stati che può avere un plug-in e per ogniuno di essi è possibile chiamare una o più procedure a piacimento.

Compilazione e Build

Una volta eseguita la build del nostro codice possiamo andare nella cartella “samplecode/output” ed all’interno troveremo il file pronto per essere copiato nella directory dei plug-in di Photoshop.

Debug

Il Debug su un progetto di questa grandezza è sicuramente necessario ma non immediato, ed è quì che ci viene in aiuto visual studio. Per eseguire il debug bisogna compilare il progetto in modalità Debug, nella cartella dell’output  vedremo la presenza di un file “.ilk” oltre al nostro plugin, bisogna copiare questo file insieme al plug-in nella directory apposita di Photoshop. Fatto questo si lancia Photoshop e si crea o si apre un immagine. Ora si deve tornare su Visual studio e cliccare su strumenti->connetti a processo e da li selezionare Photoshop, mettete i breakpoint dove necessario e lanciate il plugin da photoshop, ora il debug dovrebbe funzionare normalmente.

Per info ed approfondimenti vi consiglio di leggere tutta la manualistica presente nel file dell’SDK di Adobe e di andare su:

http://www.mactech.com/articles/mactech/Vol.15/15.04/PhotoshopPlug-InsPart1/index.html

http://www.squidoo.com/Programming-Photoshop-Plugins

http://www.photoshoproadmap.com/Photoshop-blog/2006/10/23/programming-photoshop-plugins