Odczyt formatu pliku PSD

Zastanawiam się, czy to w ogóle możliwe. Mam aplikację, która dodaje menu kontekstowe po kliknięciu prawym przyciskiem myszy pliku. Wszystko działa dobrze, ale oto co chciałbym zrobić:

Jeśli plik jest PSD, chcę, aby program wyodrębnił obraz. Czy można to zrobić bez zainstalowanego Photoshopa?

Zasadniczo chcę, aby użytkownik kliknął prawym przyciskiem myszy i kliknął "obrazek", który zapisałby .plik jpg dla nich.

Edit: będzie używał c# Dzięki

Author: Dirk Vollmar, 2009-01-06

9 answers

No to jest plugin PSD dla Paint.NET myślę, że jest to Open-Source, na które warto spojrzeć na początek:

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/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-05 23:14:35

Biblioteki ImageMagick (które zapewniają wiązania dla C#) również obsługują format PSD. Mogą być łatwiejsze do rozpoczęcia niż dostanie się do Paint.NET kod, a także są dostarczane z całkiem darmową (podobną do BSD) licencją.

Prosta próbka (znaleziona w http://midimick.com/magicknet/magickDoc.html) użycie MagickNet wyglądałoby tak:

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

Uwaga: MagickNet przeniósł się do 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/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-08 17:43:53

Ten facet robi to łatwiej:

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

Z biblioteką C# i przykładowym projektem.

Próbowałem z plikami PS2 i Działa ok.

 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/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-12 10:23:42

Napisałem parser PSD, który wyodrębnia warstwy w formacie rastrowym ze wszystkich wersji PSD i 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/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-21 07:18:17

Oto mój własny parser i eksporter psd: http://papirosnik.info/psdsplit/. Pozwala na poprawne parsowanie psd z kolorem rgb 8, 16-i 32-bitowym dla kanału, przetwarzanie masek użytkownika, eksport wybranych warstw do jpeg, png, JNG, bmp, tiff; tworzenie układu XML eksportowanych warstw i grup, a także tworzenie atlasu tekstur i zestawów animacji z podanych warstw. Jest w całości napisany w C#. Jeśli chcesz, aby jego źródła Poinformuj mnie za pomocą linku wsparcia na temat okna dialogowego w aplikacji.

 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/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-24 20:32:10

FastStone robi to całkiem sprawnie. Nie ma swoich bibliotek, ale myślę, że możesz się z nimi skontaktować i zobaczyć, czy mogą pomóc.

Sprawdź ich stronę: 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/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-12 10:07:55

ImageMagick.NET - http://imagemagick.codeplex.com/ - jest późniejszą wersją linku podanego przez 0xa3, z nieco inną składnią. (Uwaga, nie jest to testowane):

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/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-29 07:26:36

Dostałem wyciąg z psd działa. zobacz moją odpowiedź tutaj

Jak wyodrębnić warstwy z pliku Photoshop? C #

Może pomóc komuś innemu.

 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/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:33:13

Miałem wielki sukces z komponentem Imaging Aspose, który może ładować i zapisywać pliki PSD bez Photoshopa: 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/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-18 09:37:31