Pendahuluan
Aspose.PSD FOSS untuk .NET memuat, memeriksa, dan menyimpan dokumen PSD dan PSB melalui sekumpulan kecil kelas. Posting ini melihat bagian-bagian dari API inti yang tidak dibahas secara mendalam oleh posting pengantar: hubungan pewarisan Image/PsdImage, tipe nilai geometri yang digunakan di seluruh perpustakaan, dan cara perpustakaan melaporkan kesalahan pemuatan dan penyimpanan.
Apa yang Disertakan
Gambar dan PsdImage
Image adalah kelas dasar abstrak dan mengekspos Width, Height, Bounds, Load(), Save(), dan Dispose(). PsdImage adalah implementasi konkret yang sealed, yang dikembalikan oleh Image.Load() untuk input PSD/PSB — meng-cast hasilnya ke PsdImage mengekspos sisa permukaan dokumen: ColorMode, Version, Layers, Compression, BitsPerChannel, dan lainnya.
using var image = (PsdImage)Image.Load(inputPath);
Console.WriteLine($"Bounds: {image.Bounds}"); // from the Image base class
Console.WriteLine($"ColorMode: {image.ColorMode}"); // PsdImage-specific
Tipe Nilai Geometri
Point, Size, Rectangle, dan RectangleF adalah tipe nilai yang digunakan untuk batas dan koordinat di seluruh API — Layer.Bounds dan Image.Bounds keduanya adalah Rectangle, dan PsdImage.Size adalah Size. Rectangle memiliki metode geometri nyata: Contains(), Intersect(), Union(), Inflate(), dan FromLeftTopRightBottom(), antara lain.
Rectangle layerBounds = image.Layers[0].Bounds;
Rectangle imageBounds = image.Bounds;
bool fullyInside = imageBounds.Contains(layerBounds);
Rectangle overlap = Rectangle.Intersect(imageBounds, layerBounds);
Console.WriteLine($"Layer fits inside image: {fullyInside}, overlap: {overlap}");
Blok Sumber Daya dan Pengecualian
PsdImage.ImageResources mengembalikan array ResourceBlock[] yang telah diurai — setiap blok mengekspos ID, DataSize, Name, dan Signature. Pada build FOSS ini, ImageResources, GlobalLayerResources, ActiveLayer, dan HasTransparencyData dapat dibaca tetapi tidak dapat ditetapkan ulang — masing-masing memiliki setter yang melempar NotSupportedException bila dipanggil, jadi perlakukan mereka sebagai read-only meskipun tampak sebagai properti.
Kesalahan memuat dan menyimpan muncul sebagai dua tipe pengecualian khusus: PsdLoadException ketika sebuah dokumen tidak dapat diurai, dan PsdSaveException ketika sebuah dokumen tidak dapat ditulis kembali.
try
{
using var image = (PsdImage)Image.Load(inputPath);
foreach (ResourceBlock resource in image.ImageResources)
{
Console.WriteLine($"Resource {resource.ID}: {resource.Name} ({resource.DataSize} bytes)");
}
}
catch (PsdLoadException ex)
{
Console.WriteLine($"Failed to load {inputPath}: {ex.Message}");
}
Mulai Cepat
git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-.NET.git
cd Aspose.PSD-FOSS-for-.NET
dotnet buildusing Aspose.PSD.FileFormats.Psd;
try
{
using var image = (PsdImage)Image.Load("input.psd");
Console.WriteLine($"Bounds: {image.Bounds}, ColorMode: {image.ColorMode}");
Console.WriteLine($"ImageResources: {image.ImageResources.Length}");
}
catch (PsdLoadException ex)
{
Console.WriteLine($"Load failed: {ex.Message}");
}
Format yang Didukung
| Format | Ekstensi | Baca | Tulis |
|---|---|---|---|
| Dokumen Photoshop | psd | ✓ | ✓ |
| Dokumen Besar Photoshop | psb | ✓ | ✓ |
Sumber Terbuka & Lisensi
Aspose.PSD FOSS untuk .NET berlisensi MIT dan dapat digunakan dalam produk komersial tanpa royalti, tanpa watermark evaluasi atau batas penggunaan.
Paket berada pada versi 1.0.0 dan hanya memerlukan .NET 10.0 pada waktu berjalan — tidak memiliki dependensi pihak ketiga lainnya.