PSD Katmanı

Genel Bakış

Adobe® Photoshop® PSD Katmanı, grafik işlemede en iyi kavramlardan biridir. Katmanlar pikseller hakkında bilgi içerir, farklı sayıda kanala sahip olabilirler.

Photoshop Belgesindeki Katmanın en önemli parçalarından biri Katman Kaynaklarıdır. PSD’deki desteklenen Katman Kaynaklarıyla ilgili tüm bilgilere belgelerimizden ulaşabilirsiniz.

Katmanı manipüle etmek için UI, aşağıdaki ekran görüntüsünde bulunabilir:

todo:image_alt_text

Ancak Aspose.PSD, PSD Katmanlarının programatik olarak manipüle edilmesine odaklanmıştır C# ve Java.

Ek belgelere şu makalede ulaşabilirsiniz: Görüntüleri Manipüle Etme. Tüm manipülasyonlar, PSD Önizlemesi ve Katmanına işlenebilir, daha fazla bilgiyi Aspose.PSD Raster Görüntü API Referansında bulabilirsiniz.

Uygun PSD Katmanı API’si

  • Katman Efektleri
  • Katmanlar genel özellikleri
  • Katman Metadata

C# ile Katman Düzenleme Örnekleri

Yeni Katman Ekleme

Eğer açık PSD Dosyasına boş bir Katman eklemek isterseniz, aşağıdaki kodu kullanabilirsiniz.

API kullanarak PSD Dosyasına yeni Katman ekleme

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

Jpeg, Png, Gif, Ai, Tiff, Bmp dosyalarından Yeni Katman Ekleme

Herhangi bir desteklenen formatın dosyaları görüntünüze yeni bir katman olarak eklenebilir. Ancak onu doğrudan yükleyemezsiniz.

Herhangi desteklenen formattaki bir dosyadan yeni PSD Katmanı eklemek için aşağıdaki kodu kullanabilirsiniz.

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

Tüm katmanları veya katman gruplarını düzleştirme

Kullanıcılara düzenlenebilir bir PSD dosyası vermek istemiyorsanız yararlı olabilir. Aynı zamanda, dosyanın düzleştirilip düzleştirilmediğini API aracılığıyla tespit edebilirsiniz.

PSD Dosyasının Katman Düzleştirmesi:

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