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