是否可以在 WPF 中以编程方式操作 psd 文件层?

Is it possible to programmatically manipulate a psd file's layers in WPF?

我有一个包含几个图层的 Photoshop 文档,我可以打开和关闭这些图层以使图像显示不同的数据。是否可以将此图像放在 WPF 页面中并使用 C# 打开和关闭图层?我在谷歌上搜索了一段时间,但似乎没有太多关于这个主题的信息。我听说您可以使用 Expression Blend 来执行此操作,但我没有任何使用经验。
任何帮助将不胜感激,谢谢!

(免责声明:我是 Microsoft 的一名软件工程师,我曾经从事 Expression Blend 的工作)

简而言之,没有。在 .NET Framework 和 WPF 中都没有对加载 Photoshop 文件的内置支持(尽管 Blend 支持将 PSD 文档加载到项目中——它有自己的代码——并且它不支持所有功能也存在于 PSD 文件格式中)。

如果您想将 PSD 文件加载到您自己的程序中,您将需要一个 PSD 文件 reader - 要么编写您自己的文件(考虑到文件格式的复杂程度,这是愚蠢的差事)或 obtain/license 一个现有的库,有可用的开源实现(参见 Paint.NET)。

PSD 文件的一个问题是各个图层本身不一定是简单的栅格,PSD 文档也不总是包含全分辨率合成。考虑效果图层(亮度、色阶等)或图层效果(外发光、渐变叠加等)。

我建议改为让 Photoshop(通过 Action 或 Droplet 程序)将 PSD 的图层转换为单独的 PNG 文件(在应用任何效果后),然后将它们加载到您的程序中并根据您的要求显示它们。