Domanda

Mi chiedo se questo sia persino possibile. Ho un'applicazione che aggiunge un menu di scelta rapida quando fai clic con il pulsante destro del mouse su un file. Funziona tutto bene, ma ecco cosa mi piacerebbe fare:

Se il file è un PSD, voglio che il programma estragga l'immagine. È possibile farlo senza avere installato Photoshop?

Fondamentalmente voglio che l'utente faccia clic con il pulsante destro del mouse e faccia clic su " image " che salverebbe un .jpg del file per loro.

modifica: utilizzerà c # Grazie

È stato utile?

Soluzione

Bene, c'è un plug-in PSD per Paint.NET che penso sia Open-Source a cui potresti dare un'occhiata per cominciare:

http://frankblumenberg.de/doku/doku.php? id = paintnet: psdplugin # scaricare

Altri suggerimenti

Le ImageMagick librerie (che forniscono associazioni per C # ) supportano anche il formato PSD. Potrebbe essere più facile iniziare piuttosto che entrare nel codice Paint.NET e anche avere una licenza abbastanza gratuita (simile a BSD).

Un semplice esempio (disponibile in http://midimick.com/magicknet/magickDoc.html) l'utilizzo di MagickNet sarebbe simile al seguente:

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 è passato a http://www.codeproject.com/KB/ dotnet / ImageMagick_in_VBNET.aspx

Questo ragazzo lo fa più facilmente:

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

Con una libreria C # e un progetto di esempio.

Ho provato con i file PS2 e funziona bene.

Ho scritto un parser PSD che estrae i livelli in formato raster da tutte le versioni di PSD e PSB. http://www.telegraphics.com.au/svn/psdparse/trunk

Ecco il mio parser ed esportatore psd: http://papirosnik.info/psdsplit/ .  Permette di analizzare correttamente psd con colore rgb 8, 16 e 32 bit per canale, elaborare maschere utente, esportare layer selezionati in jpeg, png, jng, bmp, tiff; crea layout xml di livelli e gruppi esportati e crea anche un atlante di texture e set di animazioni da determinati livelli. È interamente scritto in C #. Se vuoi che le sue fonti mi informino tramite il link di supporto nella finestra di dialogo Informazioni sull'applicazione.

FastStone lo fa in modo abbastanza efficiente. Non hanno le loro librerie disponibili, ma immagino che tu possa contattarle e vedere se possono aiutare.

Dai un'occhiata al loro sito web: http://www.faststone.org/download.htm

ImageMagick.NET - http://imagemagick.codeplex.com/ - è la versione successiva di link 0xA3 fornito, con una sintassi leggermente diversa. (Nota, questo non è testato):

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

Ho ottenuto l'estrazione dal funzionamento di psd. vedi la mia risposta qui

Come estrarre i layer da un file di Photoshop? C #

può aiutare qualcun altro.

Puoi utilizzare GroupDocs.Viewer per .NET per rendere i tuoi file PSD come immagini (JPG, PNG, BMP) nell'applicazione utilizzando alcune righe di codice.

C #

ViewerConfig config = new ViewerConfig();
config.StoragePath = "D:\\storage\\";

// Create handler
ViewerImageHandler imageHandler = new ViewerImageHandler(config);

// Guid implies that unique document name 
string guid = "sample.psd";

// Get document pages as images
List<PageImage> pages = imageHandler.GetPages(guid);

foreach (PageImage page in pages)
{
    // Access each image using page.Stream
}

Per ulteriori dettagli e codice di esempio, visitare qui . Divulgazione: lavoro come evangelista degli sviluppatori presso GroupDocs.

Ho avuto un grande successo con il componente Imaging di Aspose che può caricare e salvare file PSD senza Photoshop: https : //products.aspose.com/imaging/net

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top