Lectura de formato de archivo PSD


Me pregunto si esto es posible. Tengo una aplicación que agrega un menú contextual cuando hace clic derecho en un archivo. Todo funciona bien, pero esto es lo que me gustaría hacer:

Si el archivo es un PSD, entonces quiero que el programa extraiga la imagen. Es posible hacerlo sin tener instalado Photoshop?

Básicamente quiero que el usuario haga clic derecho y haga clic en "imagen" que guardaría un .jpg del archivo para ellos.

Editar: usará c# Gracias

Author: Dirk Vollmar, 2009-01-06

9 answers

Bueno, hay un plugin PSD para Paint.NET que creo que es de Código abierto que puede que quieras echar un vistazo para empezar:

Http://frankblumenberg.de/doku/doku.php?id=paintnet:psdplugin#download

 17
Author: Dave Markle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-05 23:14:35

Las bibliotecas ImageMagick (que proporcionan enlaces para C#) también soportan el formato PSD. Podrían ser más fáciles de empezar con que entrar en el Paint.NET código y también vienen con una licencia bastante libre (como BSD).

Una muestra simple (que se encuentra en http://midimick.com/magicknet/magickDoc.html) usando MagickNet se vería así:

using System;

static void Main(string[] args)
{
    MagickNet.Magick.Init();
    MagicNet.Image img = new MagicNet.Image("file.psd");
    img.Resize(System.Drawing.Size(100,100));
    img.Write("newFile.png");
    MagickNet.Magick.Term();
}

Nota: MagickNet se ha movido a http://www.codeproject.com/KB/dotnet/ImageMagick_in_VBNET.aspx

 20
Author: Dirk Vollmar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-08 17:43:53

Este tipo lo hace más fácil:

Http://www.codeproject.com/KB/graphics/simplepsd.aspx

Con una biblioteca de C# y un proyecto de ejemplo.

He probado con archivos PS2 y funciona bien.

 4
Author: Franklin Albricias,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-09-12 10:23:42

He escrito un analizador PSD que extrae capas de formato raster de todas las versiones de PSD y PSB. http://www.telegraphics.com.au/svn/psdparse/trunk

 4
Author: qu1j0t3,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-11-21 07:18:17

Aquí está mi propio analizador psd y exportador: http://papirosnik.info/psdsplit / . Permite analizar correctamente psd con color rgb de 8, 16 y 32 bits para el canal, procesar máscaras de usuario, exportar capas seleccionadas a jpeg, png, jng, bmp, tiff; crear un diseño xml de capas y grupos exportados y también crear un atlas de texturas y animaciones a partir de capas dadas. Está completamente escrito en C#. Si desea que sus fuentes me informan a través de enlace de soporte en Acerca de diálogo en la aplicación.

 2
Author: papirosnik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-24 20:32:10

FastStone hace esto de manera bastante eficiente. No tienen sus bibliotecas disponibles, pero supongo que puede ponerse en contacto con ellos y ver si pueden ayudar.

Echa un vistazo a su sitio web: http://www.faststone.org/download.htm

 1
Author: Lazer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-09-12 10:07:55

ImageMagick.NET - http://imagemagick.codeplex.com / - es la versión posterior del enlace 0xA3 dado, con una sintaxis ligeramente diferente. (Nota, esto no está probado):

using ImageMagickNET;

public void Test() {
        MagickNet.InitializeMagick();
        ImageMagickNET.Image img = new ImageMagickNET.Image("file.psd");
        img.Resize(new Geometry(100, 100, 0, 0, false, false);
        img.Write("newFile.png");
}
 1
Author: Orwellophile,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-29 07:26:36

Tengo extracción de psd trabajando. ver mi respuesta aquí

Cómo extraer capas de un archivo de Photoshop? C #

Puede ayudar a alguien más.

 0
Author: Adam Mac,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:33:13

He tenido un gran éxito con el componente de imagen de Aspose que puede cargar y guardar archivos PSD sin Photoshop: https://products.aspose.com/imaging/net

 0
Author: Adam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-18 09:37:31