阅读PSD文件格式

问题描述 投票:28回答:10

我想知道这是否可能。我有一个应用程序,当您右键单击文件时添加上下文菜单。这一切都很好,但这是我想做的事情:

如果文件是PSD,那么我希望程序提取图像。这可能没有安装Photoshop吗?

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

编辑:将使用c#谢谢

c# photoshop file-format
10个回答
18
投票

那么,有一个用于Paint.NET的PSD插件,我认为它是Open-Source,你可能想看看初学者:

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


0
投票

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


20
投票

ImageMagick库(提供bindings for C#)也支持PSD格式。他们可能比开始使用Paint.NET代码更容易上手,并且还提供了一个非常免费(类似BSD)的许可证。

一个简单的样本(在http://midimick.com/magicknet/magickDoc.html) using 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


4
投票

这家伙做得更容易:

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

使用C#库和示例项目。

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


4
投票

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


2
投票

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


1
投票

FastStone非常有效地完成了这项工作。他们没有可用的库,但我想你可以联系他们,看看他们是否可以提供帮助。

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


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工作中解脱了。在这里看到我的答案

How to extract layers from a Photoshop file? C#

可以帮助别人。


1
投票

您可以使用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
}

有关更多详细信息和示例代码,请访问here。披露:我在GroupDocs担任开发人员传播者。

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