2009-01-31 16 views
7

Esiste una libreria in C# che mi consenta di leggere i livelli in un file di Photoshop (PSD) ed estrarli come immagini trasparenti (PNG)?Come estrarre i livelli da un file Photoshop? C#

Photoshop ha un comando batch che estrae tutti i livelli in singoli file ma non vi è alcuna scelta di PNG trasparenti. Il mio obiettivo è creare un piccolo programma di utilità che creerà combinazioni di livelli a piacimento (ad esempio, pensa di creare un mazzo di carte).

risposta

3

C'è un bel article su CodeProject che potrebbe essere utile. Ed ecco un thread su SO discutendo l'analisi del formato di file PSD con C#.

+0

La discussione SO parla solo della lettura di un file di Photoshop (così fanno i collegamenti). Sfortunatamente, l'applicazione demo nell'articolo CodeProject non funziona con i nuovi formati CS3. :( – pek

3

È possibile farlo con Photoshop COM.

+2

Vedi in particolare questo articolo (http: //www.pcpix.com/Photoshop /) per l'accesso all'interfaccia COM da .NET. –

1

Ho trovato un code sample che fa ciò in Java.

"Supports uncompressed or RLE-compressed RGB files only" 

supporta anche solo vecchie versioni PSD:

"Does not support additional features in PS versions higher than 3.0" 

anche ImageMagick maniglie PSD e ha interfacce per molte lingue:

"Choose from these interfaces: G2F (Ada), MagickCore (C), MagickWand (C), ChMagick (Ch), ImageMagickObject (COM+), Magick++ (C++), JMagick (Java), L-Magick (Lisp), NMagick (Neko/haXe), MagickNet (.NET), PascalMagick (Pascal), PerlMagick (Perl), MagickWand for PHP (PHP), IMagick (PHP), PythonMagick (Python), RMagick (Ruby), or TclMagick (Tcl/TK)" 
1

ImagicMagick (che stato menzionate negli altri SO articolo) consente di estrarre gli strati separatamente. Vedere: http://www.rubblewebs.co.uk/imagemagick/psd.php

Si può provare questo per voi stessi utilizzando lo strumento da riga di comando:

convert boots.psd[0] -thumbnail 340x340 boots_png.png 
3

io non potrebbe trovare molto su questo da nessuna parte, ma questo è come mi finito per farlo.

using Photoshop; 

Photoshop.PsdFile psd = new Photoshop.PsdFile(); 
psd.Load(pingTextsPsd); 

for (int j = 0; j < psd.Layers.Count; j++) 
      { 
       System.Drawing.Image myPsdImage = ImageDecoder.DecodeImage(psd.Layers[j]); 

       myPsdImage.Save(pingsOutputPath + psd.Layers[j].Name + ".png"); 

      } 

dovevo scaricati i file cs che il signor Frank Blumenberg ha fatto (basato sul motore Endogine da Jonas Beckeman), come ottenere la dll paintdotnet in sé era abbastanza.

Credo che sia stato qui che ho ottenuto i file CS.

http://code.google.com/p/skimpt/source/browse/trunk/Skimpt3/Skimpt3/classes/photoshop/?r=72

Ciò dovrebbe consentire di ottenere i livelli ..

:-)

Questo sembra funzionare bene con i file troppo CS6.

aggiornamento: un sito Web vs2013 è qui: http://goo.gl/H6nWSN.

Problemi correlati