C#中是否有一个库允许我读取photoshop文件(PSD)中的图层并将其作为透明图像(PNG)提取?
Photoshop有一个批处理命令,它将提取单个文件中的所有图层,但没有透明PNG的选择。我的目标是创建一个小型实用程序,根据您的喜好创建图层组合(例如,考虑创建卡片组)。
答案 0 :(得分:4)
答案 1 :(得分:3)
你可以用Photoshop COM做到这一点。
答案 2 :(得分:3)
我无论如何都找不到这个,但这就是我最终做到的。
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");
}
我不得不下载Frank Blumenberg先生所做的cs文件(基于Jonas Beckeman的Endogine引擎),因为获取paintdotnet dll本身就不够了。
我相信我在这里获得了cs文件。
http://code.google.com/p/skimpt/source/browse/trunk/Skimpt3/Skimpt3/classes/photoshop/?r=72
这应该可以让你获得图层..
: - )
这似乎也适用于CS6文件。
更新:vs2013网站在这里:http://goo.gl/H6nWSN。
答案 3 :(得分:1)
我发现了一个code sample,用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)"
答案 4 :(得分:1)
ImagicMagick(其他SO文章中提到 )确实允许分别提取图层。请参阅:http://www.rubblewebs.co.uk/imagemagick/psd.php
您可以使用命令行工具自行尝试:
convert boots.psd[0] -thumbnail 340x340 boots_png.png
答案 5 :(得分:0)
如果您没有安装Photoshop,那么您可能需要查看http://frankblumenberg.de/doku/doku.php?id=paintnet:psdplugin处的代码以获取更多加载PSD文件的示例代码。
不幸的是,我不知道预先存在的PNG库可以满足您的需求,但PNG文件操作的规范库代码位于http://www.libpng.org/pub/png/。