Couche PSD

Aperçu

La couche PSD d’Adobe® Photoshop® est l’un des meilleurs concepts de traitement graphique. Les couches contiennent des informations sur les pixels et peuvent avoir un nombre différent de canaux.

Une des parties les plus importantes de la couche dans le document Photoshop est les ressources de la couche. Vous pouvez obtenir la liste complète des Ressources de couche prises en charge dans un document PSD depuis notre documentation.

Vous pouvez trouver une interface utilisateur pour manipuler la couche sur la capture d’écran suivante :

todo:image_alt_text

Mais Aspose.PSD se spécialise dans la manipulation programmatique de la couche PSD via C# et Java.

Vous trouverez des informations supplémentaires dans cet article : Manipuler des images. Toute manipulation peut être effectuée sur l’aperçu PSD et la couche, vous trouverez plus d’informations dans la Référence de l’API d’image raster Aspose.PSD.

API de couche PSD disponible

  • Effets de couche
  • Propriétés communes des couches
  • Métadonnées de couche

Exemples de modification de la couche via C#

Ajout d’une nouvelle couche

Si vous souhaitez ajouter une couche vide à un fichier PSD ouvert, vous pouvez utiliser le code suivant.

Ajouter une nouvelle couche au fichier PSD en utilisant l’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());
}

Ajout d’une nouvelle couche à partir de fichiers Jpeg, Png, Gif, Ai, Tiff, Bmp

Des fichiers de tout format pris en charge peuvent être ajoutés en tant que nouvelle couche à votre image. Mais vous ne pouvez pas le charger directement.

Vous pouvez utiliser le code ci-dessous pour ajouter une nouvelle couche PSD à partir du fichier de n’importe quel format pris en charge à partir du flux.

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

Aplatir toutes les couches ou les groupes de couches

Cela peut être utile si vous ne voulez pas donner un fichier PSD modifiable à vos utilisateurs. De plus, vous pouvez identifier à travers l’API si le fichier a été aplati.

Aplatir la couche du fichier 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);
}