Ответ 1
Ну, есть PSD-плагин для Paint.NET, который, я думаю, является Open-Source, который вы, возможно, захотите взглянуть на стартеры:
http://frankblumenberg.de/doku/doku.php?id=paintnet:psdplugin#download
Интересно, возможно ли это. У меня есть приложение, которое добавляет контекстное меню при щелчке правой кнопкой мыши по файлу. Все работает отлично, но вот что я хотел бы сделать:
Если файл является PSD, я хочу, чтобы программа извлекала изображение. Можно ли это сделать без установки Photoshop?
В принципе, я хочу, чтобы пользователь щелкнул правой кнопкой мыши и щелкнул "образ", который сохранил бы .jpg файла для них.
edit: будет использовать С# Благодаря
Ну, есть PSD-плагин для Paint.NET, который, я думаю, является Open-Source, который вы, возможно, захотите взглянуть на стартеры:
http://frankblumenberg.de/doku/doku.php?id=paintnet:psdplugin#download
Библиотеки ImageMagick (которые обеспечивают привязки для С#) также поддерживают формат 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
Этот парень делает это проще:
http://www.codeproject.com/KB/graphics/simplepsd.aspx
С библиотекой С# и образцом проекта.
Я пробовал файлы PS2 и работает нормально.
Я написал парсер PSD, который извлекает слои растрового формата из всех версий PSD и PSB. http://www.telegraphics.com.au/svn/psdparse/trunk
Вот мой собственный синтаксический анализатор и экспортер psd: http://papirosnik.info/psdsplit/. Это позволяет правильно разобрать psd с цветом rgb 8, 16 и 32 бит для канала, обработать пользовательские маски, экспортировать выбранные слои в jpeg, png, jng, bmp, tiff; создать xml-раскладку экспортированных слоев и групп, а также создать атлас текстуры и анимации, заданные из заданных слоев. Он полностью написан на С#. Если вы хотите, чтобы его источники сообщали мне по ссылке поддержки в диалоговом окне "О программе" в приложении.
FastStone делает это довольно эффективно. У них нет доступных библиотек, но я думаю, вы можете связаться с ними и посмотреть, могут ли они помочь.
Посетите веб-сайт: http://www.faststone.org/download.htm
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");
}
Я получил извлечение из psd. см. мой ответ здесь
Как извлечь слои из файла Photoshop? С#
может помочь кому-то другому.
Я имел большой успех с компонентом Aspose Imaging, который может загружать и сохранять PSD файлы без Photoshop: https://products.aspose.com/imaging/net
Вы можете использовать GroupDocs.Viewer для .NET API, чтобы визуализировать ваши PSD файлы как изображения (JPG, PNG, BMP) в вашем приложении, используя несколько строк кода.
С#
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.