As fotos são uma maneira muito útil de refletir informações. Os arquivos de formato PSD são usados para criar imagens. No entanto, pode haver cenários como editar vários arquivos do Photoshop na mesma linha. Por exemplo, um aplicativo de processamento de fotos pode precisar adicionar uma camada em vários documentos do Photoshop, juntamente com outras operações. Aspose.PSD for .NET API oferece muitos recursos para trabalhar com PSD, PSB, AI e muitos outros formatos de arquivo. Vamos explorar os seguintes casos de uso relacionados à adição de uma camada em arquivos PSD:
- Adicionar camada de preenchimento em tempo de execução no arquivo PSD usando C#
- Adicionar camada de preenchimento existente no arquivo PSD usando C#
Adicionar camada de preenchimento em tempo de execução no documento do Photoshop usando C#
Aspose.PSD para .NET API suporta a criação de uma camada de preenchimento em um arquivo PSD. Você não precisa necessariamente carregar a camada de um arquivo existente. Basta seguir os passos abaixo para adicionar uma camada de preenchimento em tempo de execução no arquivo PSD:
- Inicialize uma instância da classe PsdImage com dimensões de página
- Crie uma instância da classe FillLayer
- Definir nome de exibição para a camada
- Adicione a camada à imagem
O trecho de código a seguir mostra como adicionar camada de preenchimento no Photoshop usando C#:
string outputFilePath = Path.Combine(dataDir, "output.psd");
using (var image = new PsdImage(100, 100))
{
FillLayer colorFillLayer = FillLayer.CreateInstance(Aspose.PSD.FileFormats.Psd.Layers.FillSettings.FillType.Color);
colorFillLayer.DisplayName = "Color Fill Layer";
image.AddLayer(colorFillLayer);
FillLayer gradientFillLayer = FillLayer.CreateInstance(Aspose.PSD.FileFormats.Psd.Layers.FillSettings.FillType.Gradient);
gradientFillLayer.DisplayName = "Gradient Fill Layer";
image.AddLayer(gradientFillLayer);
FillLayer patternFillLayer = FillLayer.CreateInstance(Aspose.PSD.FileFormats.Psd.Layers.FillSettings.FillType.Pattern);
patternFillLayer.DisplayName = "Pattern Fill Layer";
patternFillLayer.Opacity = 50;
image.AddLayer(patternFillLayer);
image.Save(outputFilePath);
}
Este snippet de código gerará um arquivo PSD de dimensões especificadas, onde a captura de tela abaixo mostra os nomes de três camadas de preenchimento exatamente como definido pelo código C# acima:
Adicionar camada de preenchimento existente no arquivo PSD usando C#
Já aprendemos sobre como criar e adicionar novas camadas de preenchimento. Vamos verificar como adicionar camada de arquivo existente do Photoshop. A seguir estão as possibilidades de adicionar camadas de preenchimento existentes:
i) Adicione uma camada de preenchimento com preenchimento padrão usando C#
Um preenchimento de padrão pode ter uma imagem, linha ou sombra para preencher a área. Você precisa seguir os passos abaixo para adicionar uma camada com Preenchimento Patten em uma imagem PSD:
- Carregar arquivo PSD de origem
- Itere todas as camadas e verifique FillLayer
- Defina configurações diferentes para a camada
- Edite a camada de preenchimento
- Salve a imagem
O trecho de código abaixo mostra como adicionar camada de preenchimento com preenchimento de padrão usando C#:
// Adicionar suporte de camadas de preenchimento: padrão
string sourceFileName = dataDir + "PatternFillLayer.psd";
string exportPath = dataDir + "PatternFillLayer_Edited.psd";
double tolerance = 0.0001;
var im = (PsdImage)Image.Load(sourceFileName);
using (im)
{
foreach (var layer in im.Layers)
{
if (layer is FillLayer)
{
FillLayer fillLayer = (FillLayer)layer;
PatternFillSettings fillSettings = (PatternFillSettings)fillLayer.FillSettings;
if (fillSettings.HorizontalOffset != -46 ||
fillSettings.VerticalOffset != -45 ||
fillSettings.PatternId != "a6818df2-7532-494e-9615-8fdd6b7f38e5" ||
fillSettings.PatternName != "$$$/Presets/Patterns/OpticalSquares=Optical Squares" ||
fillSettings.AlignWithLayer != true ||
fillSettings.Linked != true ||
fillSettings.PatternHeight != 64 ||
fillSettings.PatternWidth != 64 ||
fillSettings.PatternData.Length != 4096 ||
Math.Abs(fillSettings.Scale - 50) > tolerance)
{
throw new Exception("PSD Image was read wrong");
}
// Editando
fillSettings.Scale = 300;
fillSettings.HorizontalOffset = 2;
fillSettings.VerticalOffset = -20;
fillSettings.PatternData = new int[]
{
Color.Red.ToArgb(), Color.Blue.ToArgb(), Color.Blue.ToArgb(),
Color.Blue.ToArgb(), Color.Red.ToArgb(), Color.Blue.ToArgb(),
Color.Blue.ToArgb(), Color.Blue.ToArgb(), Color.Red.ToArgb()
};
fillSettings.PatternHeight = 3;
fillSettings.PatternWidth = 3;
fillSettings.AlignWithLayer = false;
fillSettings.Linked = false;
fillSettings.PatternId = Guid.NewGuid().ToString();
fillLayer.Update();
break;
}
}
im.Save(exportPath);
}
ii) Adicione uma camada de preenchimento com preenchimento gradiente usando C#
Você também pode usar o preenchimento de gradiente para preencher uma camada no documento do Photoshop. Aspose.PSD para .NET API suporta os seguintes tipos de preenchimentos de gradiente:
- Linear
- Diamante
- Radial
- Refletido
- Ângulo
Abaixo estão as etapas para adicionar uma camada com um preenchimento de gradiente:
- Carregar arquivo PSD de origem
- Inicialize uma coleção de GradientType
- Declare uma instância da classe GradientFillSettings
- Especifique GradientType e atualize a camada
- Salvar imagem PSD
O trecho de código abaixo é baseado nessas etapas e mostra como adicionar a camada GradientFill no documento do Photoshop usando C#:
string fileName = dataDir + "FillLayerGradient.psd";
GradientType[] gradientTypes = new[]
{
GradientType.Linear, GradientType.Radial, GradientType.Angle, GradientType.Reflected, GradientType.Diamond
};
using (var image = Image.Load(fileName))
{
PsdImage psdImage = (PsdImage)image;
FillLayer fillLayer = (FillLayer)psdImage.Layers[0];
GradientFillSettings fillSettings = (GradientFillSettings)fillLayer.FillSettings;
foreach (var gradientType in gradientTypes)
{
fillSettings.GradientType = gradientType;
fillLayer.Update();
psdImage.Save(fileName + "_" + gradientType.ToString() + ".png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
}
}
Este trecho de código irá gerar cinco arquivos diferentes, cada um com um tipo diferente de preenchimento Gradiente na camada do arquivo PSD.
iii) Adicione uma camada de preenchimento com preenchimento de cor usando C#
Você pode adicionar uma camada com preenchimento de cor no Photoshop Document, um arquivo PSD. Siga as etapas abaixo para adicionar ou criar uma camada de preenchimento com preenchimento de cor:
- Carregar imagem PSD de origem
- Verifique todas as camadas e encontre FillLayer
- Leia as configurações de preenchimento da camada
- Defina a cor de preenchimento e atualize a camada
- Salve a imagem PSD
O trecho de código abaixo é baseado nas etapas acima mencionadas que mostram como adicionar camada de preenchimento no Photoshop Document usando C#:
// Para exemplos completos e arquivos de dados, acesse https://github.com/aspose-psd/Aspose.PSD-for-.NET
string sourceFileName = dataDir + "ColorFillLayer.psd";
string exportPath = dataDir + "ColorFillLayer_output.psd";
var im = (PsdImage)Image.Load(sourceFileName);
using (im)
{
foreach (var layer in im.Layers)
{
if (layer is FillLayer)
{
var fillLayer = (FillLayer)layer;
if (fillLayer.FillSettings.FillType != FillType.Color)
{
throw new Exception("Wrong Fill Layer");
}
var settings = (IColorFillSettings)fillLayer.FillSettings;
settings.Color = Color.Red;
fillLayer.Update();
im.Save(exportPath);
break;
}
}
}
Conclusão
Neste artigo, você explorou algumas das muitas possibilidades para adicionar uma camada de preenchimento em arquivos PSD. Você aprendeu como adicionar uma camada do zero, bem como adicionar uma camada de arquivos PSD existentes. Diferentes tipos de camadas de preenchimento de gradiente também são abordados junto com exemplos. Existem muitos outros recursos interessantes oferecidos pela API Aspose.PSD for .NET. Sinta-se à vontade para entrar em contato conosco através dos Fóruns de suporte gratuito em caso de dúvidas.