Pergunta

Eu me pergunto se isso é possível. Eu tenho um aplicativo que adiciona um menu de contexto quando você clica com o botão direito do mouse em um arquivo. Tudo funciona bem, mas aqui está o que eu gostaria de fazer:

Se o arquivo for um PSD, eu quero que o programa extraia a imagem. Isso é possível fazer sem ter o Photoshop instalado?

Basicamente, quero que o usuário clique com o botão direito do mouse e clique com "imagem" que salvaria um .jpg do arquivo para eles.

Editar: estará usando C# obrigado

Foi útil?

Solução

Bem, há um plug-in PSD para pintar.net, que eu acho que é de código aberto, que você pode querer dar uma olhada no iniciante:

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

Outras dicas

o Imagemagick bibliotecas (que fornecem ligações para C#) também suportam o formato PSD. Eles podem ser mais fáceis de começar do que entrar no código Paint.net e também vêm com uma licença bastante gratuita (semelhante a BSD).

Uma amostra simples (encontrada em http://midimick.com/magicknet/magickdoc.html) Usar o Magicknet seria assim:

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

Nota: Magicknet mudou para http://www.codeproject.com/kb/dotnet/imagemagick_in_vbnet.aspx

Esse cara faz isso mais fácil:

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

Com uma biblioteca C# e um projeto de amostra.

Eu tentei com arquivos PS2 e funciona bem.

Escrevi um analisador PSD que extrai camadas de formato raster de todas as versões de PSD e PSB. http://www.telegraphics.com.au/svn/psdparse/trunk

Aqui está meu próprio analisador e exportador PSD:http://papirosnik.info/psdsplit/. Ele permite analisar corretamente PSD com RGB Color 8, 16 e 32 bits para canal, processos de máscaras do usuário, exportar camadas selecionadas para JPEG, PNG, JNG, BMP, TIFF; Crie um layout XML de camadas e grupos exportados e também crie um atlas e animações de textura definidas a partir de determinadas camadas. Está totalmente escrito em C#. Se você deseja que suas fontes me informem via link de suporte sobre a caixa de diálogo no aplicativo.

Faststone faz isso com bastante eficiência. Eles não têm suas bibliotecas disponíveis, mas acho que você pode contatá -las e ver se eles podem ajudar.

Confira o site deles: http://www.faststone.org/download.htm

Imagemagick.net - http://imagemagick.codeplex.com/ - é a versão posterior do link 0XA3, com uma sintaxe ligeiramente diferente. (Observe, isso não foi testado):

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

Eu recebi extração do PSD funcionando. Veja minha resposta aqui

Como extrair camadas de um arquivo Photoshop? C#

pode ajudar outra pessoa.

Você pode usar GroupDocs.Viewer para .net API para renderizar seus arquivos PSD como imagens (JPG, PNG, BMP) em seu aplicativo usando algumas linhas de código.

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
}

Para mais detalhes e código de amostra, visite aqui. Divulgação: trabalho como desenvolvedor evangelista no GroupDocs.

Tive um grande sucesso com o componente de imagem da Aspose, que pode carregar e salvar arquivos PSD sem o Photoshop: https://products.aspose.com/imaging/net

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top