Class SmartObjectLayer
SmartObjectLayer class
Определяет класс SmartObjectLayer, который содержит встроенный в файл PSD или связанный смарт-объект во внешнем файле. С помощью смарт-объектов вы можете: выполнять неразрушающие преобразования. Вы можете масштабировать, вращать, наклонять, искажать, преобразовывать перспективу или деформировать слой без потери исходных данных изображения или качества, поскольку преобразования не влияют на исходные данные. Работайте с векторными данными, такими как векторные рисунки из Illustrator, которые в противном случае будет растеризован. Выполнить неразрушающую фильтрацию. Фильтры, применяемые к смарт-объектам, можно редактировать в любое время. Редактируйте один смарт-объект и автоматически обновляйте все его связанные экземпляры. Применяйте маску слоя, связанную или не связанную со слоем смарт-объекта. Пробуйте различные дизайны с низким изображения-заполнители разрешения, которые вы позже замените окончательными версиями. В Adobe� Photoshop� вы можете встроить содержимое изображения в документ PSD. Дополнительная информация здесь:https://helpx.adobe.com/photoshop/using/create-smart-objects.html Слой со встроенным смарт-объектом содержит размещенные (PlLd) и ресурсы SoLd со свойствами смарт-объекта. Ресурс PlLd может быть один для версий PSD старше 10. Эти ресурсы содержат UniqueId LiFdDataSource в глобальном Lnk2Resource со встроенным имя_файла и другие параметры, включая встроенное содержимое файла в исходном формате в виде массива байтов.
public class SmartObjectLayer : Layer
Характеристики
| Имя | Описание |
|---|---|
| AutoAdjustPalette { get; set; } | Получает или задает значение, указывающее, следует ли автоматически настраивать палитру. |
| virtual BackgroundColor { get; set; } | Получает или задает значение цвета фона. |
| override BitsPerPixel { get; } | Получает количество бит изображения на пиксель. |
| BlendingOptions { get; } | Получает параметры наложения. |
| virtual BlendModeKey { get; set; } | Получает или задает ключ режима наложения. |
| BlendModeSignature { get; } | Получает сигнатуру режима наложения. |
| Bottom { get; set; } | Получает или задает позицию нижнего слоя. |
| Bounds { get; } | Получает границы изображения. |
| BufferSizeHint { get; set; } | Получает или задает подсказку о размере буфера, которая определяет максимально допустимый размер для всех внутренних буферов. |
| ChannelInformation { get; set; } | Получает или устанавливает информацию о канале. |
| ChannelsCount { get; } | Получает количество каналов слоя. |
| Clipping { get; set; } | Получает или задает отсечение слоя. 0 = базовый, 1 = не базовый. |
| Container { get; } | ПолучаетImage контейнер. |
| Contents { get; set; } | Получает или задает содержимое слоя смарт-объекта. Содержимое встроенного смарт-объекта представляет собой встроенный файл необработанного изображения:Data и его свойства. Содержимое связанного смарт-объекта — это необработанное содержимое связанного файла изображения, если оно доступно, и его свойства:LiFeDataSource . Мы не поддерживаем загрузку из графической библиотеки Adobe� Photoshop� � приIsLibraryLink верно. Для обычных файлов ссылок сначала используетсяRelativePath искать файл относительно пути к исходному изображениюSourceImagePath , если нет в наличии смотримFullPath , если нет то ищем файл ссылки в той же директории где наш образ:SourceImagePath . |
| ContentsBounds { get; set; } | Получает или задает границы содержимого смарт-объекта. |
| ContentsSource { get; set; } | Получает или задает источник содержимого смарт-объекта. |
| ContentType { get; } | Получает тип содержимого слоя смарт-объекта. Содержимое встроенного смарт-объекта представляет собой встроенный файл необработанного изображения:Data . Содержимое связанного смарт-объекта — это необработанное содержимое связанного файла изображения, если оно доступно:LiFeDataSource . Мы не поддерживаем загрузку из графической библиотеки Adobe� Photoshop� � приIsLibraryLink верно. Для обычных файлов ссылок сначала используетсяRelativePath искать файл относительно пути к исходному изображениюSourceImagePath , если нет в наличии смотримFullPath , если нет то ищем файл ссылки в той же директории где наш образ:SourceImagePath . |
| DataStreamContainer { get; } | Получает поток данных объекта. |
| DisplayName { get; set; } | Получает или задает отображаемое имя слоя. |
| Disposed { get; } | Получает значение, указывающее, удален ли этот экземпляр. |
| ExtraLength { get; } | Получает длину дополнительной информации слоя в байтах. |
| virtual FileFormat { get; } | Получает значение формата файла |
| Filler { get; set; } | Получает или задает заполнитель слоя. |
| FillOpacity { get; set; } | Получает или задает непрозрачность заливки. |
| Flags { get; set; } | Получает или устанавливает флаги слоя. бит 0 = защита от прозрачности; бит 1 = видимый; бит 2 = устаревший; бит 3 = 1 для Photoshop 5.0 и более поздних версий, сообщает, содержит ли бит 4 полезную информацию; бит 4 = пиксельные данные, не относящиеся к внешнему виду документа. |
| override HasAlpha { get; } | Получает значение, указывающее, есть ли у этого экземпляра альфа. |
| virtual HasBackgroundColor { get; set; } | Получает или задает значение, указывающее, имеет ли изображение фоновый цвет. |
| virtual HasTransparentColor { get; set; } | Получает значение, указывающее, имеет ли изображение прозрачный цвет. |
| override Height { get; } | Получает высоту изображения. |
| virtual HorizontalResolution { get; set; } | Получает или задает горизонтальное разрешение в пикселях на дюйм для этогоRasterImage . |
| virtual ImageOpacity { get; } | Получает непрозрачность этого изображения. |
| InterruptMonitor { get; set; } | Получает или устанавливает монитор прерываний. |
| override IsCached { get; } | Получает значение, указывающее, кэшируются ли в данный момент данные изображения. |
| IsRawDataAvailable { get; } | Получает значение, указывающее, доступна ли загрузка необработанных данных. |
| IsVisible { get; set; } | Получает или задает значение, указывающее, виден ли слой |
| virtual IsVisibleInGroup { get; } | Получает значение, указывающее, виден ли этот экземпляр в группе (если слой не входит в группу, это означает корневую группу). |
| LayerBlendingRangesData { get; set; } | Получает или задает данные диапазонов смешивания слоев. |
| LayerCreationDateTime { get; set; } | Получает или задает дату и время создания слоя. |
| LayerLock { get; set; } | Получает или устанавливает блокировку слоя. Обратите внимание, что если флаг LayerFlags.TransparencyProtected установлен, он будет перезаписан флагом блокировки слоя. |
| LayerMaskData { get; set; } | Получает или задает данные маски слоя. |
| LayerOptions { get; } | Получает параметры слоя. |
| Left { get; set; } | Получает или задает положение левого слоя. |
| Length { get; } | Получает общую длину слоя в байтах. |
| Name { get; set; } | Получает или задает имя слоя. |
| Opacity { get; set; } | Получает или задает непрозрачность слоя. 0 = прозрачный, 255 = непрозрачный. |
| Palette { get; set; } | Получает или задает цветовую палитру. Цветовая палитра не используется, когда пиксели представлены напрямую. |
| virtual PremultiplyComponents { get; set; } | Получает или задает значение, указывающее, должны ли компоненты изображения предварительно умножаться. |
| RawCustomColorConverter { get; set; } | Получает или задает пользовательский конвертер цветов |
| virtual RawDataFormat { get; } | Получает формат необработанных данных. |
| RawDataSettings { get; } | Получает текущие настройки необработанных данных. Обратите внимание, что при использовании этих настроек данные загружаются без преобразования. |
| RawFallbackIndex { get; set; } | Получает или задает резервный индекс для использования, когда индекс палитры выходит за пределы |
| RawIndexedColorConverter { get; set; } | Получает или задает преобразователь индексированных цветов |
| virtual RawLineSize { get; } | Получает исходный размер строки в байтах. |
| Resources { get; set; } | Получает или задает ресурсы слоя. |
| Right { get; set; } | Получает или устанавливает правильное положение слоя. |
| SheetColorHighlight { get; set; } | Получает или задает выделение цвета декоративного листа в списке слоев |
| Size { get; } | Получает размер изображения. |
| SmartFilters { get; } | Получает интеллектуальные фильтры. |
| SmartObjectProvider { get; } | Получает поставщика смарт-объекта. |
| Top { get; set; } | Получает или задает положение верхнего слоя. |
| virtual TransparentColor { get; set; } | Получает прозрачный цвет изображения. |
| virtual UpdateXmpData { get; set; } | Получает или задает значение, указывающее, следует ли обновлять метаданные XMP. |
| virtual UseRawData { get; set; } | Получает или задает значение, указывающее, следует ли использовать загрузку необработанных данных, когда доступна загрузка необработанных данных. |
| virtual VerticalResolution { get; set; } | Получает или задает разрешение по вертикали в пикселях на дюйм этогоRasterImage . |
| override Width { get; } | Получает ширину изображения. |
| virtual XmpData { get; set; } | Получает или задает метаданные XMP. |
Методы
| Имя | Описание |
|---|---|
| AddLayerMask(LayerMaskData) | Добавляет маску к текущему слою. |
| override AdjustBrightness(int) | Настройка яркости изображения. |
| override AdjustContrast(float) | Изображение контрастное |
| override AdjustGamma(float) | Гамма-коррекция изображения. |
| override AdjustGamma(float, float, float) | Гамма-коррекция изображения. |
| override BinarizeBradley(double) | Бинаризация изображения с использованием алгоритма адаптивной пороговой обработки Брэдли с использованием интегрального порогового значения изображения |
| override BinarizeBradley(double, int) | Бинаризация изображения с использованием алгоритма адаптивной пороговой обработки Брэдли с использованием интегрального порогового значения изображения |
| override BinarizeFixed(byte) | Бинаризация изображения с заданным порогом |
| override BinarizeOtsu() | Бинаризация изображения с пороговым значением Otsu |
| override CacheData() | Кэширует данные и гарантирует, что дополнительная загрузка данных не будет выполняться из базовогоDataStreamContainer . |
| CanSave(ImageOptionsBase) | Определяет, можно ли сохранить изображение в указанном формате файла, представленном переданными параметрами сохранения. |
| ConvertToLinked(string) | Преобразует этот встроенный смарт-объект в связанный смарт-объект. |
| override Crop(Rectangle) | Обрезка изображения. |
| virtual Crop(int, int, int, int) | Обрезать изображение со сдвигами. |
| Dispose() | Удаляет текущий экземпляр. |
| Dither(DitheringMethod, int) | Выполняет сглаживание текущего изображения. |
| override Dither(DitheringMethod, int, IColorPalette) | Выполняет сглаживание текущего изображения. |
| DrawImage(Point, RasterImage) | Рисует изображение на слое. |
| DuplicateLayer() | Создает новый слой смарт-объекта, копируя этот. Обратите внимание, что для встроенных смарт-объектов встроенное изображение является общим. Если вы хотите скопировать встроенное изображение, используйтеNewSmartObjectViaCopy метод. |
| EmbedLinked() | Встраивает связанный смарт-объект в этот слой. |
| ExportContents(string) | Экспортирует встроенное или связанное содержимое в файл. |
| virtual Filter(Rectangle, FilterOptionsBase) | Фильтрует указанный прямоугольник. |
| GetArgb32Pixel(int, int) | Получает изображение 32-битного пикселя ARGB. |
| GetDefaultArgb32Pixels(Rectangle) | Получает массив 32-битных пикселей ARGB по умолчанию. |
| virtual GetDefaultOptions(object[]) | Получает параметры по умолчанию. |
| GetDefaultPixels(Rectangle, IPartialArgb32PixelLoader) | Получает массив пикселей по умолчанию с помощью частичной загрузки пикселей. |
| GetDefaultRawData(Rectangle, RawDataSettings) | Получает массив необработанных данных по умолчанию. |
| GetDefaultRawData(Rectangle, IPartialRawDataLoader, RawDataSettings) | Получает массив необработанных данных по умолчанию с использованием частичной загрузки пикселей. |
| override GetHashCode() | Возвращает хэш-код для этого экземпляра. |
| virtual GetModifyDate(bool) | Получает дату и время последнего изменения образа ресурса. |
| virtual GetOriginalOptions() | Получает параметры, основанные на настройках исходного файла. Это может быть полезно для сохранения без изменений битовой глубины и других параметров исходного изображения. Например, если мы загружаем черно-белое изображение PNG с 1 битом на пиксель, а затем сохраните его, используя the Save будет создано выходное изображение PNG с 8 битами на пиксель. Чтобы избежать этого и сохранить изображение PNG с 1 битом на пиксель, используйте этот метод, чтобы получить соответствующие параметры сохранения и передать их Saveметод в качестве второго параметра. |
| GetPixel(int, int) | Получает пиксель изображения. |
| GetSkewAngle() | Получает угол наклона. Этот метод применим к отсканированным текстовым документам для определения угла наклона при сканировании. |
| override Grayscale() | Преобразование изображения в его представление в градациях серого |
| LoadArgb32Pixels(Rectangle) | Загружает 32-битные пиксели ARGB. |
| LoadArgb64Pixels(Rectangle) | Загружает 64-битные пиксели ARGB. |
| LoadCmyk32Pixels(Rectangle) | Загружает пиксели в формате CMYK. |
| LoadContents(LoadOptions) | Получает содержимое встроенного или связанного изображения слоя смарт-объекта. |
| LoadPartialArgb32Pixels(Rectangle, IPartialArgb32PixelLoader) | Загружает 32-битные пиксели ARGB частично по пакетам. |
| LoadPartialPixels(Rectangle, IPartialPixelLoader) | Загружает пиксели частично пачками. |
| LoadPixels(Rectangle) | Загружает пиксели. |
| LoadRawData(Rectangle, RawDataSettings, IPartialRawDataLoader) | Загружает необработанные данные. |
| LoadRawData(Rectangle, Rectangle, RawDataSettings, IPartialRawDataLoader) | Загружает необработанные данные. |
| virtual MergeLayerTo(Layer) | Объединяет слой с указанным layer |
| NewSmartObjectViaCopy() | Создает новый слой смарт-объекта, копируя этот слой. Воспроизводит функцию «Слой -> Смарт-объекты -> Новый смарт-объект через копирование» Adobe Photoshop. также копируется. Если вы хотите поделиться встроенным изображением, используйтеDuplicateLayer метод. |
| NormalizeAngle() | Нормализует угол. Этот метод применим к отсканированным текстовым документам, чтобы избавиться от перекоса сканирования. Этот метод используетGetSkewAngle иRotate методы. |
| virtual NormalizeAngle(bool, Color) | Нормализует угол. Этот метод применим к отсканированным текстовым документам, чтобы избавиться от перекоса сканирования. Этот метод используетGetSkewAngle иRotate методы. |
| ReadArgb32ScanLine(int) | Считывает всю строку сканирования по указанному индексу строки сканирования. |
| ReadScanLine(int) | Считывает всю строку сканирования по указанному индексу строки сканирования. |
| RelinkToFile(string) | Повторно связывает связанный смарт-объект с новым файлом. После этого нет необходимости вызывать метод UpdateModifiedContent. |
| ReplaceColor(Color, byte, Color) | Заменяет один цвет другим с допустимой разницей и сохраняет исходное значение альфа-канала для сохранения сглаженных краев. |
| virtual ReplaceColor(int, byte, int) | Заменяет один цвет другим с допустимой разницей и сохраняет исходное значение альфа-канала для сохранения сглаженных краев. |
| ReplaceContents(Image) | Заменяет содержимое смарт-объекта, встроенное в слой смарт-объекта. |
| ReplaceContents(string) | Заменяет содержимое файлом. После этого нет необходимости вызывать метод UpdateModifiedContent. |
| ReplaceContents(Image, ResolutionSetting) | Заменяет содержимое смарт-объекта, встроенное в слой смарт-объекта. |
| ReplaceContents(string, ResolutionSetting) | Заменяет содержимое файлом. После этого нет необходимости вызывать метод UpdateModifiedContent. |
| ReplaceNonTransparentColors(Color) | Заменяет все непрозрачные цвета новым цветом и сохраняет исходное значение альфа-канала для сохранения гладких краев. Примечание: если вы используете его на изображениях без прозрачности, все цвета будут заменены одним цветом. |
| virtual ReplaceNonTransparentColors(int) | Заменяет все непрозрачные цвета новым цветом и сохраняет исходное значение альфа-канала для сохранения гладких краев. Примечание: если вы используете его на изображениях без прозрачности, все цвета будут заменены одним цветом. |
| Resize(int, int) | Изменяет размер изображения. По умолчаниюLeftTopToLeftTopиспользуется. |
| override Resize(int, int, ImageResizeSettings) | Изменяет размер изображения. |
| override Resize(int, int, ResizeType) | Изменяет размер изображения. |
| ResizeHeightProportionally(int) | Изменяет размер высоты пропорционально. |
| virtual ResizeHeightProportionally(int, ImageResizeSettings) | Изменяет размер высоты пропорционально. |
| virtual ResizeHeightProportionally(int, ResizeType) | Изменяет размер высоты пропорционально. |
| ResizeWidthProportionally(int) | Изменяет ширину пропорционально. |
| virtual ResizeWidthProportionally(int, ImageResizeSettings) | Изменяет ширину пропорционально. |
| virtual ResizeWidthProportionally(int, ResizeType) | Изменяет ширину пропорционально. |
| virtual Rotate(float) | Повернуть изображение вокруг центра. |
| override Rotate(float, bool, Color) | Повернуть изображение вокруг центра. |
| override RotateFlip(RotateFlipType) | Вращает, переворачивает или поворачивает и переворачивает изображение. |
| Save() | Сохраняет данные изображения в базовый поток. |
| override Save(Stream) | Сохраняет данные объекта в указанный поток. |
| Save(string) | Сохраняет данные объекта в указанном месте файла. |
| Save(Stream, ImageOptionsBase) | Сохраняет данные изображения в указанный поток в указанном формате файла в соответствии с параметрами сохранения. |
| override Save(string, bool) | Сохраняет данные объекта в указанном месте файла. |
| override Save(string, ImageOptionsBase) | Сохраняет данные объекта в указанном месте файла в указанном формате файла в соответствии с параметрами сохранения. |
| override Save(Stream, ImageOptionsBase, Rectangle) | Сохраняет данные изображения в указанный поток в указанном формате файла в соответствии с параметрами сохранения. |
| override Save(string, ImageOptionsBase, Rectangle) | Сохраняет данные объекта в указанном месте файла в указанном формате файла в соответствии с параметрами сохранения. |
| SaveArgb32Pixels(Rectangle, int[]) | Сохраняет 32-битные пиксели ARGB. |
| SaveCmyk32Pixels(Rectangle, int[]) | Сохраняет пиксели. |
| SavePixels(Rectangle, Color[]) | Сохраняет пиксели. |
| SaveRawData(byte[], int, Rectangle, RawDataSettings) | Сохраняет необработанные данные. |
| SetArgb32Pixel(int, int, int) | Устанавливает 32-битный пиксель изображения ARGB для указанной позиции. |
| override SetPalette(IColorPalette, bool) | Задает палитру изображения. |
| SetPixel(int, int, Color) | Устанавливает пиксель изображения для указанной позиции. |
| virtual SetResolution(double, double) | Устанавливает разрешение для этогоRasterImage . |
| ShallowCopy() | Создает поверхностную копию текущего слоя. Пожалуйстаhttps://msdn.microsoft.com/ru-ru/library/system.object.memberwiseclone(v=vs.110).aspx для объяснения. |
| virtual ToBitmap() | Преобразует растровое изображение в растровое. |
| UpdateModifiedContent() | Обновляет кэш изображения слоя смарт-объекта с измененным содержимым. |
| WriteArgb32ScanLine(int, int[]) | Записывает всю строку сканирования в указанный индекс строки сканирования. |
| WriteScanLine(int, Color[]) | Записывает всю строку сканирования в указанный индекс строки сканирования. |
Примеры
Следующий код демонстрирует поддержку встроенных смарт-объектов.
[C#]
void AssertAreEqual(object actual, object expected)
{
if (!object.Equals(actual, expected))
{
throw new FormatException(string.Format("Actual value {0} are not equal to expected {1}.", actual, expected));
}
}
// В этом примере показано, как изменить слой смарт-объекта в PSD-файле и экспортировать/обновить исходное встроенное содержимое смарт-объекта.
const int left = 0;
const int top = 0;
const int right = 0xb;
const int bottom = 0x10;
FileFormat[] formats = new[]
{
FileFormat.Png, FileFormat.Psd, FileFormat.Bmp, FileFormat.Jpeg, FileFormat.Gif, FileFormat.Tiff, FileFormat.Jpeg2000
};
foreach (FileFormat format in formats)
{
string formatString = format.ToString().ToLowerInvariant();
string formatExt = format == FileFormat.Jpeg2000 ? "jpf" : formatString;
string fileName = "r-embedded-" + formatString;
string sourceFilePath = fileName + ".psd";
string pngOutputPath = fileName + "_output.png";
string psdOutputPath = fileName + "_output.psd";
string png2OutputPath = fileName + "_updated.png";
string psd2OutputPath = fileName + "_updated.psd";
string exportPath = fileName + "_export." + formatExt;
using (PsdImage image = (PsdImage)Image.Load(sourceFilePath))
{
var smartObjectLayer = (SmartObjectLayer)image.Layers[0];
AssertAreEqual(left, smartObjectLayer.ContentsBounds.Left);
AssertAreEqual(top, smartObjectLayer.ContentsBounds.Top);
AssertAreEqual(right, smartObjectLayer.ContentsBounds.Right);
AssertAreEqual(bottom, smartObjectLayer.ContentsBounds.Bottom);
// Давайте экспортируем встроенное изображение смарт-объекта из слоя смарт-объекта PSD
smartObjectLayer.ExportContents(exportPath);
// Проверяем, правильно ли сохранено исходное изображение
image.Save(psdOutputPath, new PsdOptions(image));
image.Save(pngOutputPath, new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
using (var innerImage = (RasterImage)smartObjectLayer.LoadContents(null))
{
AssertAreEqual(format, innerImage.FileFormat);
// Давайте инвертируем исходное изображение смарт-объекта
var pixels = innerImage.LoadArgb32Pixels(innerImage.Bounds);
for (int i = 0; i < pixels.Length; i++)
{
var pixel = pixels[i];
var alpha = (int)(pixel & 0xff000000);
pixels[i] = (~(pixel & 0x00ffffff)) | alpha;
}
innerImage.SaveArgb32Pixels(innerImage.Bounds, pixels);
// Давайте заменим встроенное изображение смарт-объекта в слое PSD
smartObjectLayer.ReplaceContents(innerImage);
}
// Проверяем, корректно ли сохранено обновленное изображение
image.Save(psd2OutputPath, new PsdOptions(image));
image.Save(png2OutputPath, new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
}
}
Смотрите также
- class Layer
- class SmartObjectProvider
- class LinkDataSource
- пространство имен Aspose.PSD.FileFormats.Psd.Layers.SmartObjects
- сборка Aspose.PSD