Ядро API
Основне API
PsdImage є точкою входу для завантаження, інспектування та збереження PSD/PSB документів. Він розширює абстрактний Image базовий клас, який оголошує Width, Height, Bounds, Load(), Save() та Dispose().
Завантаження та збереження документів
Image.Load() приймає шлях до файлу або Stream і повертає Image; приведiть результат до PsdImage, щоб отримати доступ до решти поверхні документа. PsdImage.Save() записує документ назад у шлях до файлу або поток.
using var image = (PsdImage)Image.Load(inputPath);
// ... inspect or edit ...
image.Save(outputPath);Властивості заголовка документа
PsdImage надає розпарсений заголовок як типізовані властивості: Width, Height, BitsPerChannel, ColorMode, Version, Compression, Size та IsFlatten.
Console.WriteLine($"Width: {image.Width}, Height: {image.Height}");
Console.WriteLine($"ColorMode: {image.ColorMode}, Version: {image.Version}");
Console.WriteLine($"Compression: {image.Compression}, IsFlatten: {image.IsFlatten}");Ресурси зображень
PsdImage.ImageResources повертає розпарсений масив ResourceBlock[]. У цьому FOSS збірці, ImageResources, GlobalLayerResources, ActiveLayer та HasTransparencyData можна читати, але не перепризначати — їх сеттери викидають NotSupportedException.
foreach (ResourceBlock resource in image.ImageResources)
{
Console.WriteLine($"Resource {resource.ID}: {resource.Name} ({resource.DataSize} bytes)");
}Поради та найкращі практики
- Завжди приводьте результат
Image.Load()доPsdImage, щоб отримати доступ до специфічних для PSD членів. - Обертайте об’єкти, які варті
Dispose(), у операторusing;PsdImageреалізуєIDisposable. - Розглядайте
ImageResources,GlobalLayerResources,ActiveLayerіHasTransparencyDataяк лише для читання, хоча вони мають сеттер. - Перевірте
image.Layers.Lengthперед індексацієюimage.Layers— сплощений документ може не мати шарів.
Поширені проблеми
| Проблема | Причина | Виправлення |
|---|---|---|
NotSupportedException при встановленні ImageResources | Ця властивість лише для читання у збірці FOSS, незважаючи на наявність setter | Читайте значення; не намагайтеся переприсвоїти його |
Порожній масив image.Layers у сплощеному документі | IsFlatten є true і документ не має проаналізованих шарів | Перевірте image.Layers.Length (або image.IsFlatten) перед індексуванням у image.Layers |
FAQ
Чи розкодує завантаження PSD-документа піксельні дані?
Ні. PsdImage.Load() аналізує заголовок документа, метадані шарів та ресурси без декодування або відтворення піксельних даних.
Чи можу я конвертувати файл PSD в інший формат зображення?
Ні. Ця бібліотека завантажує, перевіряє та зберігає лише документи PSD/PSB — вона не відтворює піксельні дані і не конвертує в інші формати зображень.
API Reference Підсумок
| Клас/Метод | Опис |
|---|---|
Image.Load(string) / Image.Load(Stream) | Завантажує документ PSD або PSB |
PsdImage.Save(string) / PsdImage.Save(Stream) | Зберігає документ |
PsdImage.Width / Height / BitsPerChannel / ColorMode / Version / Compression / Size / IsFlatten | Властивості заголовка документа |
PsdImage.ImageResources | Проаналізовані блоки ресурсів зображень (тільки для читання) |