Capa PSD

Descripción

La capa PSD de Adobe® Photoshop® es uno de los mejores conceptos en el procesamiento gráfico. Las capas contienen información sobre píxeles y pueden tener una cantidad diferente de canales.

Una de las partes más importantes de una capa en un Documento de Photoshop son los Recursos de la Capa. Puede obtener la lista completa de Recursos de Capa admitidos en el PSD desde nuestra documentación.

Puede encontrar la interfaz de usuario para manipular la capa en la siguiente captura de pantalla:

todo:image_alt_text

Pero Aspose.PSD se especializa en la manipulación programática de la Capa PSD a través de C# y Java.

Puede encontrar documentación adicional en este Artículo: Manipulación de Imágenes. Toda la manipulación se puede procesar en una Vista Previa y Capa PSD, puede encontrar más información en Referencia de API de Imágenes Raster de Aspose.PSD.

API de Capa PSD Disponible

  • Efectos de Capa
  • Propiedades comunes de las Capas
  • Metadatos de Capa

Ejemplos de Edición de Capa a través de C#

Agregando una nueva Capa

Si desea agregar una Capa vacía a un Archivo PSD abierto, puede utilizar el siguiente código.

Agregar nueva Capa al Archivo PSD usando la 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());
}

Agregando una nueva Capa desde archivos Jpeg, Png, Gif, Ai, Tiff, Bmp

Los archivos de cualquier formato admitido se pueden agregar como una nueva capa a su imagen. Pero no se pueden cargar directamente.

Puede utilizar el siguiente código para agregar una nueva Capa PSD desde el archivo de cualquier formato admitido desde el flujo

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

Combinar todas las capas o grupos de capas

Puede resultar útil si no desea entregar un archivo PSD editable a sus usuarios. Además, puede identificar a través de la API si el archivo se ha combinado.

Combinación de Capas de Archivo 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);
}