Camada PSD
Visão Geral
A Camada PSD da Adobe® Photoshop® é um dos melhores conceitos em processamento gráfico. As camadas contêm informações sobre pixels e podem ter uma contagem diferente de canais.
Uma das partes mais importantes da Camada no Documento Photoshop é o Recurso de Camada. Você pode obter a lista completa de Recursos de Camada suportados em PSD em nossa documentação.
Você pode encontrar a interface para manipular a camada na captura de tela a seguir:
Mas a Aspose.PSD se especializa na manipulação programática da Camada PSD via C# e Java.
Documentação adicional pode ser encontrada neste Artigo: Manipulação de Imagens. Toda a manipulação pode ser processada para uma Pré-visualização e Camada PSD, você encontra mais informações na Referência da API de Imagem Raster da Aspose.PSD.
API de Camada PSD Disponível
- Efeitos de Camada
- Propriedades comuns de Camadas
- Metadados da Camada
Exemplos de Edição de Camada via C#
Adição de uma nova Camada
Se você deseja adicionar uma Camada vazia a um Arquivo PSD aberto, você pode usar o seguinte código.
Adicione uma nova Camada ao Arquivo PSD usando a API
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
// Make ability to add the newly generated regular layer to PsdImage | |
string sourceFileName = dataDir + "OneLayer.psd"; | |
string exportPath = dataDir + "OneLayerEdited.psd"; | |
string exportPathPng = dataDir + "OneLayerEdited.png"; | |
using (var im = (PsdImage)Image.Load(sourceFileName)) | |
{ | |
// Preparing two int arrays | |
var data1 = new int[2500]; | |
var data2 = new int[2500]; | |
var rect1 = new Rectangle(0, 0, 50, 50); | |
var rect2 = new Rectangle(0, 0, 100, 25); | |
for (int i = 0; i < 2500; i++) | |
{ | |
data1[i] = -10000000; | |
data2[i] = -10000000; | |
} | |
var layer1 = im.AddRegularLayer(); | |
layer1.Left = 25; | |
layer1.Top = 25; | |
layer1.Right = 75; | |
layer1.Bottom = 75; | |
layer1.SaveArgb32Pixels(rect1, data1); | |
var layer2 = im.AddRegularLayer(); | |
layer2.Left = 25; | |
layer2.Top = 150; | |
layer2.Right = 125; | |
layer2.Bottom = 175; | |
layer2.SaveArgb32Pixels(rect2, data2); | |
// Save psd | |
im.Save(exportPath, new PsdOptions()); | |
// Save png | |
im.Save(exportPathPng, new PngOptions()); | |
} |
Adição de nova Camada de arquivos Jpeg, Png, Gif, Ai, Tiff, Bmp
Arquivos de qualquer formato suportado podem ser adicionados como uma nova camada à sua imagem. Porém, não é possível carregá-los diretamente.
Você pode usar o código abaixo para adicionar uma nova Camada PSD do arquivo de qualquer formato suportado do stream
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
string outputFilePath = dataDir + "PsdResult.psd"; | |
var filesList = new string[] | |
{ | |
"PsdExample.psd", | |
"BmpExample.bmp", | |
"GifExample.gif", | |
"Jpeg2000Example.jpf", | |
"JpegExample.jpg", | |
"PngExample.png", | |
"TiffExample.tif", | |
}; | |
using (var image = new PsdImage(200, 200)) | |
{ | |
foreach (var fileName in filesList) | |
{ | |
string filePath = dataDir + fileName; | |
using (var stream = new FileStream(filePath, FileMode.Open)) | |
{ | |
Layer layer = null; | |
try | |
{ | |
layer = new Layer(stream); | |
image.AddLayer(layer); | |
} | |
catch (Exception e) | |
{ | |
if (layer != null) | |
{ | |
layer.Dispose(); | |
} | |
throw e; | |
} | |
} | |
} | |
image.Save(outputFilePath); | |
} |
Aplanar todas as camadas ou grupos de camadas
Pode ser útil se você não deseja dar um arquivo PSD editável aos seus usuários. Além disso, você pode identificar através da API se o arquivo foi aplainado.
Aplanamento de Camadas do Arquivo PSD:
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
// Flatten whole PSD | |
string sourceFileName = dataDir + "ThreeRegularLayersSemiTransparent.psd"; | |
string exportPath = dataDir + "ThreeRegularLayersSemiTransparentFlattened.psd"; | |
using (var im = (PsdImage)(Image.Load(sourceFileName))) | |
{ | |
im.FlattenImage(); | |
im.Save(exportPath); | |
} | |
// Merge one layer in another | |
exportPath = dataDir + "ThreeRegularLayersSemiTransparentFlattenedLayerByLayer.psd"; | |
using (var im = (PsdImage)(Image.Load(sourceFileName))) | |
{ | |
var bottomLayer = im.Layers[0]; | |
var middleLayer = im.Layers[1]; | |
var topLayer = im.Layers[2]; | |
var layer1 = im.MergeLayers(bottomLayer, middleLayer); | |
var layer2 = im.MergeLayers(layer1, topLayer); | |
// Set up merged layers | |
im.Layers = new Layer[] { layer2 }; | |
im.Save(exportPath); | |
} |