Menggabungkan Layer PSD ke Layer Lain

Mengekspor Gambar ke PSD

PSD, dokumen PhotoShop, adalah format file default yang digunakan oleh Adobe Photoshop untuk bekerja dengan gambar. Aspose.PSD memungkinkan Anda untuk memuat, mengedit, dan menyimpan file ke dalam format PSD sehingga dapat dibuka dan diedit di Photoshop. Artikel ini menunjukkan cara menyimpan file ke PSD dengan Aspose.PSD, dan juga membahas beberapa pengaturan yang dapat digunakan saat menyimpan ke format ini. PsdOptions adalah kelas khusus dalam namespace ImageOptions yang digunakan untuk mengekspor gambar ke PSD. Untuk mengekspor ke PSD, buat sebuah instansi dari kelas Image, baik dimuat dari file gambar yang ada (misalnya miniatur) atau dibuat dari awal. Artikel ini menjelaskan cara melakukannya. Dalam contoh di bawah ini, sebuah gambar dibuat dari awal. Setelah dibuat dan data piksel diisi, simpan gambar menggunakan metode Save dari kelas Image, dan berikan objek PsdOptions sebagai argumen kedua. Beberapa properti kelas PsdOptions dapat diatur untuk konversi tingkat lanjut. Beberapa properti tersebut adalah ModeWarna, MetodeKompresi dan Versi. Aspose.PSD mendukung metode kompresi berikut melalui enumerasi CompressionMethod:

Mode warna berikut didukung melalui enumerasi ColorModes:

Sumber daya tambahan dapat ditambahkan, seperti sumber daya miniatur untuk PSD v4.0, v5.0 dan yang lebih tinggi, atau grid dan panduan sumber daya untuk PSD v4.0 dan yang lebih tinggi. Kode di bawah membuat file Image dari awal, mengisi pikselnya, dan menyimpannya ke dalam PSD dengan kompresi RLE dan mode warna grayscale. Potongan kode berikut menunjukkan bagaimana cara mengekspor Gambar ke PSD.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
// Create a new image from scratch.
using (PsdImage image = new PsdImage(300, 300))
{
// Fill image data.
Graphics graphics = new Graphics(image);
graphics.Clear(Color.White);
var pen = new Pen(Color.Brown);
graphics.DrawRectangle(pen, image.Bounds);
// Create an instance of PsdOptions, Set it's various properties Save image to disk in PSD format
PsdOptions psdOptions = new PsdOptions();
psdOptions.ColorMode = ColorModes.Rgb;
psdOptions.CompressionMethod = CompressionMethod.Raw;
psdOptions.Version = 4;
image.Save(dataDir + "ExportImageToPSD_output.psd", psdOptions);
}

Mengimpor gambar ke lapisan PSD

Artikel ini mendemonstrasikan penggunaan Aspose.PSD untuk menambahkan atau mengimpor gambar ke lapisan PSD. API Aspose.PSD telah mengekspos metode yang efisien dan mudah digunakan untuk mencapai tujuan ini. Aspose.PSD telah mengekspos metode DrawImage dari kelas Layer untuk menambahkan/mengimpor gambar ke dalam file PSD. Metode DrawImage membutuhkan nilai lokasi dan gambar untuk menambahkan/mengimpor gambar ke dalam file PSD. Langkah-langkah untuk mengimpor gambar ke lapisan PSD adalah sebagai berikut:

Potongan kode berikut menunjukkan cara mengimpor gambar ke lapisan PSD.

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

Penggantian Warna dalam Lapisan PSD

Artikel ini mendemonstrasikan penggunaan Aspose.PSD untuk menambahkan atau mengimpor gambar ke lapisan PSD. API Aspose.PSD telah mengekspos metode yang efisien dan mudah digunakan untuk mencapai tujuan ini. Aspose.PSD telah mengekspos metode DrawImage dari kelas Layer untuk menambahkan/mengimpor gambar ke dalam file PSD. Metode DrawImage membutuhkan nilai lokasi dan gambar untuk menambahkan/mengimpor gambar ke dalam file PSD. Langkah-langkah untuk mengimpor gambar ke lapisan PSD adalah sebagai berikut:

Potongan kode berikut menunjukkan cara mengimpor gambar ke lapisan PSD.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
// Load a PSD file as an image and caste it into PsdImage
using (PsdImage image = (PsdImage)Image.Load(dataDir + "sample.psd"))
{
foreach (var layer in image.Layers)
{
if (layer.Name == "Rectangle 1")
{
layer.HasBackgroundColor = true;
layer.BackgroundColor = Color.Orange;
}
}
image.Save(dataDir + "asposeImage02.psd");
}

Membuat Simpangan dari File PSD

PSD adalah format dokumen asli aplikasi Adobe Photoshop. Adobe Photoshop (versi 5.0 dan seterusnya) menyimpan informasi miniatur untuk tampilan pratinjau dalam blok sumber daya gambar yang terdiri dari header 28 byte awal, diikuti oleh miniatur JFIF dalam urutan RGB (merah, hijau, biru). API Aspose.PSD menyediakan mekanisme yang mudah digunakan untuk mengakses sumber daya file PSD. Sumber daya ini juga termasuk sumber miniatur yang pada akhirnya dapat diambil dan disimpan ke disk sesuai kebutuhan aplikasi. Potongan kode berikut menunjukkan bagaimana cara membuat miniatur dari File PSD.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
// Load a PSD file as an image and caste it into PsdImage
using (PsdImage image = (PsdImage)Image.Load(dataDir + "sample.psd"))
{
int index = 0;
// Iterate over the PSD resources
foreach (var resource in image.ImageResources)
{
index++;
// Check if the resource is of thumbnail type
if (resource is ThumbnailResource)
{
// Retrieve the ThumbnailResource and Check the format of the ThumbnailResource
var thumbnail = (ThumbnailResource)resource;
if (thumbnail.Format == ThumbnailFormat.KJpegRgb)
{
// Create a new image by specifying the width and height, Store the pixels of thumbnail on to the newly created image and save image
PsdImage thumnailImage = new PsdImage(thumbnail.Width, thumbnail.Height);
thumnailImage.SavePixels(thumnailImage.Bounds, thumbnail.ThumbnailData);
thumnailImage.Save(dataDir + "CreateThumbnailsFromPSDFiles_out_" + index.ToString() + ".bmp", new BmpOptions());
}
}
}
}

Membuat File PSD Indeks

Aspose.PSD untuk API .NET dapat membuat file PSD indeks dari awal. Artikel ini mendemonstrasikan penggunaan kelas PsdOptions dan PsdImage untuk membuat PSD Indeks sambil menggambar beberapa bentuk di atas kanvas yang baru dibuat. Langkah-langkah sederhana berikut diperlukan untuk membuat file PSD Indeks.

Potongan kode berikut menunjukkan cara membuat file PSD indeks.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
// Create an instance of PsdOptions and set it's properties
var createOptions = new PsdOptions();
createOptions.Source = new FileCreateSource(dataDir + "Newsample_out.psd", false);
createOptions.ColorMode = ColorModes.Indexed;
createOptions.Version = 5;
// Create a new color palette having RGB colors, Set Palette property & compression method
Color[] palette = { Color.Red, Color.Green, Color.Blue, Color.Yellow };
createOptions.Palette = new PsdColorPalette(palette);
createOptions.CompressionMethod = CompressionMethod.RLE;
// Create a new PSD with PsdOptions created previously
using (var psd = Image.Create(createOptions, 500, 500))
{
// Draw some graphics over the newly created PSD
var graphics = new Graphics(psd);
graphics.Clear(Color.White);
graphics.DrawEllipse(new Pen(Color.Red, 6), new Rectangle(0, 0, 400, 400));
psd.Save();
}

Mengekspor Layer PSD ke Gambar Raster

Aspose.PSD .NET memungkinkan Anda untuk mengekspor layer dalam file PSD ke dalam gambar raster. Silakan gunakan metode Aspose.PSD.FileFormats.Psd.Layers.Layer.Save untuk mengekspor lapisan ke gambar. Potongan kode berikut memuat file PSD dan mengekspor masing-masing layer ke gambar PNG menggunakan Aspose.PSD.FileFormats.Psd.Layers.Layer.Save. Setelah semua layer diekspor ke gambar PNG, Anda dapat membukanya menggunakan penampil gambar favorit Anda. Potongan kode berikut menunjukkan cara mengekspor lapisan PSD ke gambar raster.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
// Load a PSD file as an image and caste it into PsdImage
using (PsdImage psdImage = (PsdImage)Image.Load(dataDir + "sample.psd"))
{
// Create an instance of PngOptions class
var pngOptions = new PngOptions();
pngOptions.ColorType = PngColorType.TruecolorWithAlpha;
// Loop through the list of layers
for (int i = 0; i < psdImage.Layers.Length; i++)
{
// Convert and save the layer to PNG file format.
psdImage.Layers[i].Save(string.Format("layer_out{0}.png", i + 1), pngOptions);
}
}

Memperbarui Layer Teks dalam File PSD

Aspose.PSD untuk .NET memungkinkan Anda untuk memanipulasi teks dalam layer teks dari file PSD. Gunakan kelas Aspose.PSD.FileFormats.Psd.Layers.TextLayer untuk memperbarui teks dalam lapisan PSD. Potongan kode berikut memuat file PSD, mengakses layer teks, memperbarui teks, dan menyimpan file PSD dengan nama baru menggunakan metode Aspose.PSD.FileFormats.Psd.Layers.TextLayer.UpdateText.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
// Load a PSD file as an image and cast it into PsdImage
using (PsdImage psdImage = (PsdImage)Image.Load(dataDir + "layers.psd"))
{
foreach (var layer in psdImage.Layers)
{
if (layer is TextLayer)
{
TextLayer textLayer = layer as TextLayer;
textLayer.UpdateText("test update", new Point(0, 0), 15.0f, Color.Purple);
}
}
psdImage.Save(dataDir + "UpdateTextLayerInPSDFile_out.psd");
}

Mendeteksi Flattened PSD

Aspose.PSD untuk .NET memungkinkan Anda untuk mendeteksi apakah file PSD yang diberikan sudah tersusun rapi atau tidak. Properti IsFlatten telah diperkenalkan dalam kelas Aspose.PSD.FileFormats.Psd.PsdImage untuk mencapai fungsi ini. Potongan kode berikut memuat file PSD dan mengakses properti IsFlatten.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
// Load a PSD file as an image and cast it into PsdImage
using (PsdImage psdImage = (PsdImage)Image.Load(dataDir + "layers.psd"))
{
// Do processing, Get the true value if PSD is flatten and false in case the PSD is not flatten.
Console.WriteLine(psdImage.IsFlatten);
}

Menggabungkan Layer PSD

Artikel ini menunjukkan bagaimana cara menggabungkan layer dalam file PSD saat mengonversi file PSD ke JPG dengan Aspose.PSD. Dalam contoh di bawah ini, file PSD yang ada dimuat dengan melewatkan jalur file ke metode statis Load dari kelas Image. Begitu dimuat, konversi/cetak gambar ke PsdImage. Buat instansi dari kelas JpegOptions dan atur berbagai propertinya. Sekarang panggil metode Save dari instansi PsdImage. Potongan kode berikut menunjukkan cara menggabungkan layer PSD.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
// Load a PSD file as an image and cast it into PsdImage
using (PsdImage psdImage = (PsdImage)Image.Load(dataDir + "layers.psd"))
{
// Create JPEG option class object, Set its properties and save image
var jpgOptions = new JpegOptions();
psdImage.Save(dataDir + "MergePSDlayers_output.jpg", jpgOptions);
}

Dukungan Grayscale Dengan Alfa untuk PSD

Artikel ini menunjukkan bagaimana mendukung Grayscale dengan alfa untuk file PSD saat mengonversi file PSD ke PNG dengan Aspose.PSD. Dalam contoh di bawah ini, file PSD yang ada dimuat dengan melewatkan jalur file ke metode statis Load dari kelas Image. Setelah itu dimuat, konversi/cetak gambar ke PsdImage. Buat sebuah instansi dari kelas PngOptions dan atur berbagai propertinya. Atur properti TipeWarna ke TruecolorWithAlpha. Sekarang panggil metode Save dari instansi PngOptions. Potongan kode berikut menunjukkan cara mengonversi menjadi PNG Grayscale dengan Alfa.

Dukungan Efek Layer Untuk PSD

Artikel ini menunjukkan cara mendukung berbagai efek seperti Blur, Inner Glow, dan Outer Glow untuk layer PSD. Potongan kode berikut menunjukkan bagaimana mendukung efek layer.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
string sourceFileName = dataDir + "layers.psd";
string output = dataDir + "layers.png";
using (PsdImage image = (PsdImage)Image.Load(sourceFileName,
new ImageLoadOptions.PsdLoadOptions()
{
LoadEffectsResource = true,
UseDiskForLoadEffectsResource = true
}))
{
Debug.Assert(image.Layers[2] != null, "Layer with effects resource was not recognized");
image.Save(output, new ImageOptions.PngOptions()
{
ColorType =
FileFormats.Png
.PngColorType
.TruecolorWithAlpha
});
}

Dukungan Tanggal dan Waktu Pembuatan Layer

Artikel ini menunjukkan cara mendukung pembuatan layer tanggal dan waktu untuk layer PSD. Potongan kode berikut menunjukkan bagaimana membuat layer.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
string SourceName = dataDir + "OneLayer.psd";
// Load a PSD file as an image and cast it into PsdImage
using (var im = (PsdImage)(Image.Load(SourceName)))
{
var layer = im.Layers[0];
var creationDateTime = layer.LayerCreationDateTime;
var expectedDateTime = new DateTime(2018, 7, 17, 8, 57, 24, 769);
if (expectedDateTime != creationDateTime)
{
throw new Exception("Assertion fails");
}
var now = DateTime.Now;
var createdLayer = im.AddLevelsAdjustmentLayer();
// Check if Creation Date Time Updated on newly created layers
if (!(now <= createdLayer.LayerCreationDateTime))
{
throw new Exception("Assertion fails");
}
}

Dukungan Highlight Warna Sheet

Artikel ini menunjukkan cara memuat gambar PSD lalu mengubah dan menyorot warna lembar serta menyimpannya sebagai gambar. Potongan kode telah disediakan.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
string exportPath = dataDir + "SheetColorHighlightExampleChanged.psd";
// Load a PSD file as an image and cast it into PsdImage
using (var im = (PsdImage)(Image.Load(sourceFileName)))
{
var layer1 = im.Layers[0];
var layer2 = im.Layers[1];
if (layer1.SheetColorHighlight != SheetColorHighlightEnum.Violet ||
layer2.SheetColorHighlight != SheetColorHighlightEnum.Orange)
{
throw new Exception("Assertion failed");
}
layer1.SheetColorHighlight = SheetColorHighlightEnum.Yellow;
im.Save(exportPath);
}

Dukungan Masker Layer

Artikel ini menunjukkan bagaimana mendukung layer mask untuk gambar PSD lalu menyimpan gambar tersebut. Potongan kode telah disediakan di bawah.

Dukungan Masker Vektor Layer

Artikel ini menunjukkan Dukungan masker vektor layer untuk Aspose.PSD. Potongan kode di bawah ini menunjukkan bagaimana Aspose.PSD mendukung masker vektor layer.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
string exportPath = dataDir + "DifferentLayerMasks_Export.psd";
string exportPathPng = dataDir + "DifferentLayerMasks_Export.png";
// reading
using (PsdImage image = (PsdImage)Image.Load(sourceFileName))
{
// make changes to the vector path points
foreach (var layer in image.Layers)
{
foreach (var layerResource in layer.Resources)
{
var resource = layerResource as VectorPathDataResource;
if (resource != null)
{
foreach (var pathRecord in resource.Paths)
{
var bezierKnotRecord = pathRecord as BezierKnotRecord;
if (bezierKnotRecord != null)
{
Point p0 = bezierKnotRecord.Points[0];
bezierKnotRecord.Points[0] = bezierKnotRecord.Points[2];
bezierKnotRecord.Points[2] = p0;
break;
}
}
}
}
}
// exporting
image.Save(exportPath);
image.Save(exportPathPng, new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
}

Dukungan Layer Teks saat Runtime

Artikel ini menunjukkan cara menambahkan layer teks saat runtime untuk gambar PSD. Potongan kode telah disediakan di bawah.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
// Add color overlay layer effect at runtime
string sourceFileName = dataDir + "ThreeRegularLayers.psd";
string exportPath = dataDir + "ThreeRegularLayersChanged.psd";
var loadOptions = new PsdLoadOptions()
{
LoadEffectsResource = true
};
using (var im = (PsdImage)Image.Load(sourceFileName, loadOptions))
{
var effect = im.Layers[1].BlendingOptions.AddColorOverlay();
effect.Color = Color.Green;
effect.Opacity = 128;
effect.BlendMode = BlendMode.Normal;
im.Save(exportPath);
}

Dukungan Layer Penyesuaian

Artikel ini menunjukkan cara menyesuaikan layer dan jika layer kosong, kemudian menggabungkan layer dan menyimpannya sebagai gambar PSD. Potongan kode telah disediakan di bawah.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
// The path to the documents directory.
string dataDir = RunExamples.GetDataDir_PSD();
// Channel Mixer Adjustment Layer
string sourceFileName1 = dataDir + "ChannelMixerAdjustmentLayer.psd";
string exportPath1 = dataDir + "ChannelMixerAdjustmentLayerChanged.psd";
using (var im = (PsdImage)(Image.Load(sourceFileName1)))
{
for (int i = 0; i < im.Layers.Length; i++)
{
var adjustmentLayer = im.Layers[i] as AdjustmentLayer;
if (adjustmentLayer != null)
{
adjustmentLayer.MergeLayerTo(im.Layers[0]);
}
}
// Save PSD
im.Save(exportPath1);
}
// Levels adjustment layer
var sourceFileName2 =dataDir+ "LevelsAdjustmentLayerRgb.psd";
var exportPath2 = dataDir + "LevelsAdjustmentLayerRgbChanged.psd";
using (var im = (PsdImage)(Image.Load(sourceFileName2)))
{
for (int i = 0; i < im.Layers.Length; i++)
{
var adjustmentLayer = im.Layers[i] as AdjustmentLayer;
if (adjustmentLayer != null)
{
adjustmentLayer.MergeLayerTo(im.Layers[0]);
}
}
// Save PSD
im.Save(exportPath2);
}

Mengelola Kecerahan dan Kontras dalam Layer Penyesuaian

Artikel ini menunjukkan bagaimana merubah layer dan mengatur kecerahan serta kontras dalam layer lalu menyimpannya sebagai gambar PSD. Potongan kode telah disediakan di bawah.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
// Brightness/Contrast layer editing
string sourceFileName = dataDir + "BrightnessContrastModern.psd";
string psdPathAfterChange = dataDir + "BrightnessContrastModernChanged.psd";
using (var im = (PsdImage)Image.Load(sourceFileName))
{
foreach (var layer in im.Layers)
{
if (layer is BrightnessContrastLayer)
{
var brightnessContrastLayer = (BrightnessContrastLayer)layer;
brightnessContrastLayer.Brightness = 50;
brightnessContrastLayer.Contrast = 50;
}
}
// Save PSD
im.Save(psdPathAfterChange);
}

Mengelola Layer Paparan

Artikel ini menunjukkan bagaimana menambahkan dan mengedit layer paparan lalu mengelola layer paparan lalu menyimpannya sebagai gambar PSD. Potongan kode telah disediakan