2009-01-31 20 views
7

¿Hay una biblioteca en C# que me permita leer las capas en un archivo de Photoshop (PSD) y extraerlas como imágenes transparentes (PNG)?¿Cómo extraer capas de un archivo de Photoshop? C#

Photoshop tiene un comando por lotes que extraerá todas las capas en archivos individuales, pero no hay opción de PNG transparentes. Mi objetivo es crear un pequeño programa de utilidad que cree combinaciones de capas a su gusto (por ejemplo, piense en crear un mazo de cartas).

Respuesta

3

Hay un bonito article en CodeProject que puede ser útil. Y aquí está un thread en SO discutiendo el formato de archivo PSD analizando con C#.

+0

La discusión SO solo habla sobre la lectura de un archivo photoshop (también lo hacen los enlaces). Desafortunadamente, la aplicación de demostración en el artículo CodeProject no funciona con los nuevos formatos CS3. :( – pek

3

Puede hacerlo con Photoshop COM.

+2

Ver en particular este artículo (http: //www.pcpix.com/Photoshop /) al acceder a la interfaz COM desde .NET. –

1

Encontré un code sample que hace esto en Java.

"Supports uncompressed or RLE-compressed RGB files only" 

apoya Además, sólo las versiones anteriores de PSD:

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

también ImageMagick maneja PSD y tiene interfaces a muchos idiomas:

"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 (que se se menciona en el otro SO artículo) permite que las capas se extraigan por separado. Ve: http://www.rubblewebs.co.uk/imagemagick/psd.php

Puede probar esto por sí mismo utilizando la herramienta de línea de comandos:

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

no pude encontrar mucho sobre esto en cualquier lugar, pero esto es como terminé haciéndolo.

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"); 

      } 

tuve que descargar los archivos cs que el señor Frank hizo Blumenberg (basado en el motor Endogine por Jonas Beckeman), como conseguir la dll paintdotnet sí lo suficiente tampoco fue.

Creo que fue aquí donde obtuve los archivos cs.

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

Esto debería permitir obtener las capas ..

:-)

Esto parece funcionar bien con los archivos CS6 también.

actualización: un sitio web vs2013 está aquí: http://goo.gl/H6nWSN.

Cuestiones relacionadas