Lendo o formato de arquivo PSD
-
03-07-2019 - |
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
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