Как извлечь слои из файла Photoshop? C # - PullRequest
7 голосов
/ 01 февраля 2009

Есть ли в C # библиотека, которая позволит мне читать слои в файле Photoshop (PSD) и извлекать их в виде прозрачных изображений (PNG)?

В Photoshop есть пакетная команда, которая извлекает все слои в отдельных файлах, но прозрачных PNG нет. Моя цель - создать небольшую утилиту, которая будет создавать комбинации слоев по вашему вкусу (например, подумать о создании колоды карт).

Ответы [ 6 ]

4 голосов
/ 01 февраля 2009

Есть хорошая статья о CodeProject, которая может оказаться полезной. А вот поток , на котором SO обсуждает синтаксический анализ формата файла PSD с помощью C #.

3 голосов
/ 21 января 2013

Я нигде не мог найти много об этом, но так я и сделал.

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

            }

Мне пришлось загрузить файлы cs, которые сделал мистер Фрэнк Блюменберг (на основе движка Endogine Джонаса Бекемана), так как получить саму dll paintdotnet было недостаточно.

Я думаю, что именно здесь я получил файлы CS.

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

Это должно позволить вам получить слои ..

: -)

Похоже, что это нормально работает и с файлами CS6.

обновление: веб-сайт vs2013 находится здесь: http://goo.gl/H6nWSN.

3 голосов
/ 01 февраля 2009

Вы можете сделать это с помощью Photoshop COM.

1 голос
/ 29 декабря 2011

ImagicMagick (который был , упомянутый в другой статье SO) позволяет раздельно извлекать слои. Смотри: http://www.rubblewebs.co.uk/imagemagick/psd.php

Вы можете попробовать это сами, используя инструмент командной строки:

convert boots.psd[0] -thumbnail 340x340 boots_png.png
1 голос
/ 06 июля 2009

Я нашел пример кода , который делает это на Java.

"Supports uncompressed or RLE-compressed RGB files only"

Также поддерживает только более старые версии PSD:

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

Также ImageMagick поддерживает PSD и имеет интерфейсы для многих языков:

"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)"
0 голосов
/ 13 мая 2009

Если у вас не установлен Photoshop, вы можете посмотреть код http://frankblumenberg.de/doku/doku.php?id=paintnet:psdplugin, чтобы узнать больше примеров кода, загружающего PSD-файлы.

К сожалению, я не знаю ранее существовавшей библиотеки PNG, которая делает то, что вам нужно, но канонический код библиотеки для манипулирования файлами PNG находится по адресу http://www.libpng.org/pub/png/.

...