【问题标题】:How to extract layers from a Photoshop file? C#如何从 Photoshop 文件中提取图层? C#
【发布时间】:2010-10-04 17:12:33
【问题描述】:

C# 中是否有一个库可以让我读取 Photoshop 文件 (PSD) 中的图层并将它们提取为透明图像 (PNG)?

Photoshop 有一个批处理命令,可以提取单个文件中的所有图层,但没有透明 PNG 的选择。我的目标是创建一个小型实用程序,它可以根据需要创建图层组合(例如创建卡片组)。

【问题讨论】:

    标签: c# photoshop


    【解决方案1】:

    CodeProject 上有一个不错的article,它可能会有所帮助。这里有一个thread 在 SO 上讨论使用 C# 解析 PSD 文件格式。

    【讨论】:

    • SO 讨论只讨论读取 Photoshop 文件(链接也是如此)。不幸的是,CodeProject 文章中的演示应用程序不适用于新的 CS3 格式。 :(
    【解决方案2】:

    我在任何地方都找不到太多关于此的内容,但这就是我最终这样做的方式。

    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】:

      您可以使用 Photoshop COM 做到这一点。

      【讨论】:

      【解决方案4】:

      ImagicMagick(在另一篇 SO 文章中提到过)确实允许单独提取层。见:http://www.rubblewebs.co.uk/imagemagick/psd.php

      您可以使用命令行工具自己尝试一下:

      convert boots.psd[0] -thumbnail 340x340 boots_png.png
      

      【讨论】:

        【解决方案5】:

        我找到了一个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)"
        

        【讨论】:

          【解决方案6】:

          如果您没有安装 Photoshop,那么您可能需要查看http://frankblumenberg.de/doku/doku.php?id=paintnet:psdplugin 的代码以获取更多加载 PSD 文件的示例代码。

          不幸的是,我不知道现有的 PNG 库可以满足您的需求,但用于 PNG 文件操作的规范库代码位于 http://www.libpng.org/pub/png/

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-11-26
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-12-24
            相关资源
            最近更新 更多