是否可以在不使用 Photoshop 的情况下将 PSD 文件提取为 JPG 图像?

问题描述 投票:0回答:11

我有一个应用程序,当您右键单击文件时会添加上下文菜单。

如果这是一个 PSD 文件,那么我希望程序提取图像。

是否可以在不使用 Photoshop 的情况下将 PSD 文件提取为图像?

基本上,我希望用户右键单击并单击“图像”,这将为他们保存文件的

.jpg

c# photoshop file-format psd
11个回答
20
投票

ImageMagick 库(为 C# 提供绑定)也支持 PSD 格式。它们可能比进入 Paint.NET 代码更容易上手,并且还附带相当免费的(类似 BSD)许可证。

一个简单的示例(位于 http://midimick.com/magicknet/magickDoc.html)使用 MagickNet 看起来像这样:

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


16
投票

嗯,Paint.NET 有一个 PSD 插件,我认为它是开源的,初学者可能想看一下:

http://frankblumenberg.de/doku/doku.php?id=paintnet:psdplugin#download


3
投票

这家伙做得更容易:

http://www.codeproject.com/KB/graphics/simplepsd.aspx

带有 C# 库和示例项目。

我尝试过使用 PS2 文件并且工作正常。


3
投票

我编写了一个 PSD 解析器,它从所有版本的 PSD 和 PSB 中提取光栅格式图层。 http://www.telegraphics.com.au/svn/psdparse/trunk


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 担任开发人员传播者。


2
投票

对于现在正在阅读本文的人:已接受答案的链接似乎不再起作用(至少对我来说)。会在那里添加评论,但还不允许评论 - 因此我添加一个新答案。

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


2
投票

这是我自己的 psd 解析器和导出器: http://papirosnik.info/psdsplit/。 它允许正确解析带有 rgb 颜色 8、16 和 32 位通道的 psd,处理用户蒙版,将选定的图层导出为 jpeg、png、jng、bmp、tiff;创建导出图层和组的 xml 布局,并从给定图层创建纹理图集和动画集。 它完全是用 C# 编写的。如果您希望其来源通过应用程序中的“关于”对话框上的支持链接通知我。


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

1
投票

我从 psd 中提取了工作。 在这里查看我的答案

如何从 Photoshop 文件中提取图层? C#

可能会帮助别人。


0
投票

FastStone 非常有效地做到了这一点。 他们没有可用的图书馆,但我想你可以联系他们,看看他们是否可以提供帮助。

查看他们的网站:http://www.faststone.org/download.htm


0
投票

我在 Aspose 的成像组件上取得了巨大成功,它可以在没有 Photoshop 的情况下加载和保存 PSD 文件:https://products.aspose.com/imaging/net

© www.soinside.com 2019 - 2024. All rights reserved.