Ядро API

Основной API

PsdImage является точкой входа для загрузки, инспекции и сохранения документов PSD/PSB. Он расширяет абстрактный базовый класс Image, который объявляет Width, Height, Bounds, Load(), Save() и Dispose().


Загрузка и сохранение документов

Image.Load() принимает путь к файлу или Stream и возвращает Image; приведите результат к 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-версии, несмотря на наличие сеттераЧитайте значение; не пытайтесь переназначать его
Пустой массив 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Разобранные блоки ресурсов изображения (только для чтения)

См. также:

 Русский