读取PSD文件格式

30

我想知道这是否可能。我有一个应用程序,可以在右键单击文件时添加上下文菜单。一切都运作正常,但是我想做的是:

如果文件是PSD格式,则希望程序能够提取图像。是否可以在没有安装Photoshop的情况下完成此操作?

基本上,我希望用户右键单击并单击“图像”,然后为他们保存文件的.jpg格式。

编辑:将使用c#。 谢谢


1
如果您检出/浏览代码,请查看Platters文件夹。因此,Platters > classes > photoshop。我已经有几年没有在那个项目上工作了,所以您需要仔细研究它。http://code.google.com/p/skimpt/ - masfenix
我找到了它:if (System.IO.Path.GetExtension(filename) == ".psd") { Photoshop.PsdFile psd = new Photoshop.PsdFile(); psd.Load(filename); //解码图像 Image myPsdImage = Photoshop.ImageDecoder.DecodeImage(psd); //创建新图像 skImage ski = new skImage(myPsdImage); Common.ShowToastForm(ski); } - masfenix
另外:https://github.com/NtreevSoft/psd-parser - aloisdg
11个回答

20

ImageMagick库(提供了适用于C#的绑定)也支持PSD格式。与深入探究Paint.NET代码相比,这可能更容易入手,并且还具有相当自由(类似BSD)的许可证。

使用MagickNet的简单示例(在http://midimick.com/magicknet/magickDoc.html中找到)如下:

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

注意:MagickNet已经迁移到http://www.codeproject.com/KB/dotnet/ImageMagick_in_VBNET.aspx


它是 MagickNet.Image img = new MagickNet.Image("file.psd");img.Resize(new System.Drawing.Size(100,100)); - Rami Alshareef

17

3

3

3
你可以使用GroupDocs.Viewer for .NET API在你的应用程序中使用少量的代码将你的PSD文件渲染为图像(JPG,PNG,BMP)。 C#
ViewerConfig config = new ViewerConfig();
config.StoragePath = "D:\\storage\\";

// Create handler
ViewerImageHandler imageHandler = new ViewerImageHandler(config);

// Guid implies that unique document name 
string guid = "sample.psd";

// Get document pages as images
List<PageImage> pages = imageHandler.GetPages(guid);

foreach (PageImage page in pages)
{
    // Access each image using page.Stream
}

欲了解更多详情和示例代码,请访问此处

声明:我是GroupDocs的开发者大使。

链接是可以的,但请考虑发布那些链接中相关的代码以帮助回答问题。 - Jeremy W

2
这里是我自己编写的PSD解析器和导出器:http://papirosnik.info/psdsplit/。它能够正确解析具有RGB颜色8、16位和32位通道的PSD文件,处理用户蒙版,将所选层导出为JPEG、PNG、JNG、BMP、TIFF格式,并创建导出图层和组的XML布局。此外,它还可以从给定的图层创建纹理集和动画序列。该应用完全使用C#编写,如需源代码,请通过“关于”对话框中的支持链接与我联系。

2

现在正在阅读此内容的人:接受答案的链接似乎不再有效(至少对我来说是这样)。想在那里添加评论,但还不允许评论 - 因此我正在添加新答案。

您可以找到Paint.Net的psdplugin代码的工作链接:https://github.com/PsdPlugin/PsdPlugin


1

1

ImageMagick.NET - http://imagemagick.codeplex.com/ - 是0xA3提供的链接的最新版本,语法略有不同。(注意,这尚未经过测试):

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

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接