Чтение формата файла PSD
-
03-07-2019 - |
Вопрос
Интересно, возможно ли это вообще.У меня есть приложение, которое добавляет контекстное меню, когда вы щелкаете правой кнопкой мыши по файлу.Все это работает нормально, но вот что я хотел бы сделать:
Если файл представляет собой PSD, то я хочу, чтобы программа извлекла изображение.Можно ли это сделать без установленного Photoshop?
По сути, я хочу, чтобы пользователь щелкнул правой кнопкой мыши и выбрал "изображение", которое сохранит для него файл .jpg.
Редактировать:будет использовать c# Спасибо
Решение
Ну, есть плагин PSD для Paint.NET, который я считаю открытым исходным кодом, на который вы, возможно, захотите взглянуть для начала:
http://frankblumenberg.de/doku/doku.php? ID = PaintNET: psdplugin # загрузить
Другие советы
библиотеки 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 р>
Этот парень делает это проще:
http://www.codeproject.com/KB/graphics/simplepsd.aspx р>
С библиотекой C # и примером проекта.
Я пробовал с файлами 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-макет экспортируемых слоев и групп, а также создать атлас текстуры и анимации, заданные из заданных слоев. Это полностью написано на C #. Если вы хотите, чтобы его источники сообщили мне через ссылку поддержки в диалоговом окне «О программе» в приложении.
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? C # р>
может помочь кому-то еще.
Вы можете использовать GroupDocs.Viewer для .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.
Я добился большого успеха с компонентом Aspose Imaging, который может загружать и сохранять PSD-файлы без Photoshop: https : //products.aspose.com/imaging/net