Вопрос

Интересно, возможно ли это вообще.У меня есть приложение, которое добавляет контекстное меню, когда вы щелкаете правой кнопкой мыши по файлу.Все это работает нормально, но вот что я хотел бы сделать:

Если файл представляет собой 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top