Ядро 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 | Разобранные блоки ресурсов изображения (только для чтения) |