Class SmartObjectLayer

SmartObjectLayer class

Définit la classe SmartObjectLayer qui contient incorporé dans le fichier PSD ou l’objet intelligent lié dans le fichier externe. Avec les objets intelligents, vous pouvez : Effectuer des transformations non destructives. Vous pouvez mettre à l’échelle, faire pivoter, incliner, déformer, transformer en perspective ou déformer un calque sans perdre les données ou la qualité de l’image d’origine, car les transformations n’affectent pas les données d’origine. Travaillez avec des données vectorielles, telles que des illustrations vectorielles d’Illustrator, qui autrement serait pixellisé. Effectuer un filtrage non destructif. Vous pouvez modifier les filtres appliqués aux objets dynamiques à tout moment. Modifiez un objet dynamique et mettez à jour automatiquement toutes ses instances liées. Appliquez un masque de calque lié ou non au calque d’objet dynamique. Essayez différentes conceptions avec des images d’espace réservé de résolution que vous remplacerez ultérieurement par les versions finales. Dans Adobe® Photoshop®, vous pouvez intégrer le contenu d’une image dans un document PSD. Plus d’informations ici :https://helpx.adobe.com/photoshop/using/create-smart-objects.html Une couche avec un objet intelligent intégré contient des ressources placées (PlLd) et SoLd avec des propriétés d’objet intelligent. La ressource PlLd peut être seule pour les versions PSD antérieures à 10. Ces ressources contiennent UniqueId de LiFdDataSource dans le Lnk2Resource global avec le filename et d’autres paramètres, y compris le contenu du fichier intégré au format d’origine sous forme de tableau d’octets.

public class SmartObjectLayer : Layer

Propriétés

NomLa description
AutoAdjustPalette { get; set; }Obtient ou définit une valeur indiquant si la palette de réglage automatique.
virtual BackgroundColor { get; set; }Obtient ou définit une valeur pour la couleur d’arrière-plan.
override BitsPerPixel { get; }Obtient le nombre de bits d’image par pixel.
BlendingOptions { get; }Obtient les options de fusion.
virtual BlendModeKey { get; set; }Obtient ou définit la clé du mode de fusion.
BlendModeSignature { get; }Obtient la signature du mode de fusion.
Bottom { get; set; }Obtient ou définit la position de la couche inférieure.
Bounds { get; }Obtient les limites de l’image.
BufferSizeHint { get; set; }Obtient ou définit l’indice de taille de tampon qui est défini comme la taille maximale autorisée pour tous les tampons internes.
ChannelInformation { get; set; }Obtient ou définit les informations du canal.
ChannelsCount { get; }Obtient le nombre de canaux de la couche.
Clipping { get; set; }Obtient ou définit l’écrêtage du calque. 0 = base, 1 = non base.
Container { get; }Obtient leImage conteneur.
Contents { get; set; }Obtient ou définit le contenu de la couche d’objet intelligent. Le contenu de l’objet intelligent intégré est le fichier d’image brute intégré :Data et ses propriétés. Le contenu de l’objet intelligent lié est le contenu brut du fichier image lié s’il est disponible et ses propriétés :LiFeDataSource . Nous ne prenons pas en charge le chargement à partir de la bibliothèque graphique Adobe� Photoshop� �� lorsqueIsLibraryLink est vrai. Pour les fichiers de liens réguliers, nous utilisons d’abordRelativePath pour rechercher le fichier relativement au chemin de l’image sourceSourceImagePath , s’il n’est pas disponible nous regardonsFullPath , sinon alors nous cherchons le fichier de lien dans le même répertoire où se trouve notre image :SourceImagePath .
ContentsBounds { get; set; }Obtient ou définit les limites du contenu de l’objet intelligent.
ContentsSource { get; set; }Obtient ou définit la source du contenu de l’objet intelligent.
ContentType { get; }Obtient le type du contenu de la couche d’objets intelligents. Le contenu de l’objet intelligent intégré est le fichier d’image brute intégré :Data . Le contenu de l’objet intelligent lié est le contenu brut du fichier image lié s’il est disponible :LiFeDataSource . Nous ne prenons pas en charge le chargement à partir de la bibliothèque graphique Adobe� Photoshop� �� lorsqueIsLibraryLink est vrai. Pour les fichiers de liens réguliers, nous utilisons d’abordRelativePath pour rechercher le fichier relativement au chemin de l’image sourceSourceImagePath , s’il n’est pas disponible nous regardonsFullPath , sinon alors nous cherchons le fichier de lien dans le même répertoire où se trouve notre image :SourceImagePath .
DataStreamContainer { get; }Obtient le flux de données de l’objet.
DisplayName { get; set; }Obtient ou définit le nom d’affichage de la couche.
Disposed { get; }Obtient une valeur indiquant si cette instance est supprimée.
ExtraLength { get; }Obtient la longueur des informations supplémentaires de la couche en octets.
virtual FileFormat { get; }Obtient une valeur de format de fichier
Filler { get; set; }Obtient ou définit le remplissage du calque.
FillOpacity { get; set; }Obtient ou définit l’opacité du remplissage.
Flags { get; set; }Obtient ou définit les indicateurs de calque. bit 0 = transparence protégée ; bit 1 = visible ; bit 2 = obsolète ; bit 3 = 1 pour Photoshop 5.0 et versions ultérieures, indique si le bit 4 contient des informations utiles ; bit 4 = données de pixel sans rapport avec l’apparence du document.
override HasAlpha { get; }Obtient une valeur indiquant si cette instance a alpha.
virtual HasBackgroundColor { get; set; }Obtient ou définit une valeur indiquant si l’image a une couleur d’arrière-plan.
virtual HasTransparentColor { get; set; }Obtient une valeur indiquant si l’image a une couleur transparente.
override Height { get; }Obtient la hauteur de l’image.
virtual HorizontalResolution { get; set; }Obtient ou définit la résolution horizontale, en pixels par pouce, de ceRasterImage .
virtual ImageOpacity { get; }Obtient l’opacité de cette image.
InterruptMonitor { get; set; }Obtient ou définit le moniteur d’interruption.
override IsCached { get; }Obtient une valeur indiquant si les données d’image sont actuellement mises en cache.
IsRawDataAvailable { get; }Obtient une valeur indiquant si le chargement des données brutes est disponible.
IsVisible { get; set; }Obtient ou définit une valeur indiquant si le calque est visible
virtual IsVisibleInGroup { get; }Obtient une valeur indiquant si cette instance est visible dans le groupe (si la couche n’est pas dans le groupe, cela signifie le groupe racine).
LayerBlendingRangesData { get; set; }Obtient ou définit les données des plages de fusion des calques.
LayerCreationDateTime { get; set; }Obtient ou définit la date et l’heure de création de la couche.
LayerLock { get; set; }Obtient ou définit le verrouillage de couche. Notez que si l’indicateur LayerFlags.TransparencyProtected est défini, il sera écrasé par l’indicateur de verrouillage de couche. Pour renvoyer LayerFlags.TransparencyProtected, l’indicateur doit s’appliquer à l’option de couche layer.Flags |= LayerFlags.TransparencyProtected
LayerMaskData { get; set; }Obtient ou définit les données du masque de calque.
LayerOptions { get; }Obtient les options de calque.
Left { get; set; }Obtient ou définit la position du calque de gauche.
Length { get; }Obtient la longueur globale de la couche en octets.
Name { get; set; }Obtient ou définit le nom de la couche.
Opacity { get; set; }Obtient ou définit l’opacité du calque. 0 = transparent, 255 = opaque.
Palette { get; set; }Obtient ou définit la palette de couleurs. La palette de couleurs n’est pas utilisée lorsque les pixels sont représentés directement.
virtual PremultiplyComponents { get; set; }Obtient ou définit une valeur indiquant si les composants de l’image doivent être prémultipliés.
RawCustomColorConverter { get; set; }Obtient ou définit le convertisseur de couleur personnalisé
virtual RawDataFormat { get; }Obtient le format des données brutes.
RawDataSettings { get; }Obtient les paramètres de données brutes actuels. Notez que lorsque vous utilisez ces paramètres, les données se chargent sans conversion.
RawFallbackIndex { get; set; }Obtient ou définit l’index de secours à utiliser lorsque l’index de palette est hors limites
RawIndexedColorConverter { get; set; }Obtient ou définit le convertisseur de couleur indexé
virtual RawLineSize { get; }Obtient la taille de ligne brute en octets.
Resources { get; set; }Obtient ou définit les ressources de la couche.
Right { get; set; }Obtient ou définit la bonne position de calque.
SheetColorHighlight { get; set; }Obtient ou définit la surbrillance de la couleur de la feuille décorative dans la liste des calques
Size { get; }Obtient la taille de l’image.
SmartFilters { get; }Obtient les filtres intelligents.
SmartObjectProvider { get; }Obtient le fournisseur d’objet intelligent.
Top { get; set; }Obtient ou définit la position de la couche supérieure.
virtual TransparentColor { get; set; }Obtient la couleur transparente de l’image.
virtual UpdateXmpData { get; set; }Obtient ou définit une valeur indiquant s’il faut mettre à jour les métadonnées XMP.
virtual UseRawData { get; set; }Obtient ou définit une valeur indiquant s’il faut utiliser le chargement des données brutes lorsque le chargement des données brutes est disponible.
virtual VerticalResolution { get; set; }Obtient ou définit la résolution verticale, en pixels par pouce, de ceRasterImage .
override Width { get; }Obtient la largeur de l’image.
virtual XmpData { get; set; }Obtient ou définit les métadonnées XMP.

Méthodes

NomLa description
AddLayerMask(LayerMaskData)Ajoute le masque au calque actuel.
override AdjustBrightness(int)Réglage d’une luminosité pour l’image.
override AdjustContrast(float)Image contrastée
override AdjustGamma(float)Correction gamma d’une image.
override AdjustGamma(float, float, float)Correction gamma d’une image.
override BinarizeBradley(double)Binarisation d’une image à l’aide de l’algorithme de seuillage adaptatif de Bradley à l’aide du seuillage d’image intégral
override BinarizeBradley(double, int)Binarisation d’une image à l’aide de l’algorithme de seuillage adaptatif de Bradley à l’aide du seuillage d’image intégral
override BinarizeFixed(byte)Binarisation d’une image avec seuil prédéfini
override BinarizeOtsu()Binarisation d’une image avec seuillage Otsu
override CacheData()Met en cache les données et garantit qu’aucun chargement de données supplémentaire ne sera effectué à partir du sous-jacentDataStreamContainer .
CanSave(ImageOptionsBase)Détermine si l’image peut être enregistrée dans le format de fichier spécifié représenté par les options d’enregistrement transmises.
ConvertToLinked(string)Convertit cet objet intelligent intégré en un objet intelligent lié.
override Crop(Rectangle)Recadrage de l’image.
virtual Crop(int, int, int, int)Recadrer l’image avec des décalages.
Dispose()Supprime l’instance actuelle.
Dither(DitheringMethod, int)Effectue un tramage sur l’image actuelle.
override Dither(DitheringMethod, int, IColorPalette)Effectue un tramage sur l’image actuelle.
DrawImage(Point, RasterImage)Dessine l’image sur le calque.
DuplicateLayer()Crée un nouveau calque d’objet intelligent en copiant celui-ci. Notez que pour les objets intelligents intégrés, l’image intégrée est partagée. Si vous souhaitez copier l’image intégrée, utilisezNewSmartObjectViaCopy méthode.
EmbedLinked()Incorpore l’objet intelligent lié dans ce calque.
ExportContents(string)Exporte le contenu intégré ou lié vers un fichier.
virtual Filter(Rectangle, FilterOptionsBase)Filtre le rectangle spécifié.
GetArgb32Pixel(int, int)Obtient une image pixel ARGB 32 bits.
GetDefaultArgb32Pixels(Rectangle)Obtient le tableau de pixels ARGB 32 bits par défaut.
virtual GetDefaultOptions(object[])Récupère les options par défaut.
GetDefaultPixels(Rectangle, IPartialArgb32PixelLoader)Obtient le tableau de pixels par défaut à l’aide du chargeur de pixels partiel.
GetDefaultRawData(Rectangle, RawDataSettings)Obtient le tableau de données brutes par défaut.
GetDefaultRawData(Rectangle, IPartialRawDataLoader, RawDataSettings)Obtient le tableau de données brutes par défaut à l’aide du chargeur de pixels partiel.
override GetHashCode()Renvoie un code de hachage pour cette instance.
virtual GetModifyDate(bool)Obtient la date et l’heure de la dernière modification de l’image de ressource.
virtual GetOriginalOptions()Obtient les options basées sur les paramètres du fichier d’origine. Cela peut être utile pour conserver la profondeur de bits et d’autres paramètres de l’image d’origine inchangés. Par exemple, si nous chargeons une image PNG noir-blanc avec 1 bit par pixel, puis enregistrez-le en utilisant the Save , l’image PNG de sortie avec 8 bits par pixel sera produite. Pour l’éviter et enregistrer l’image PNG avec 1 bit par pixel, utilisez cette méthode pour obtenir les options d’enregistrement correspondantes et passez-les auSaveméthode comme deuxième paramètre.
GetPixel(int, int)Obtient un pixel d’image.
GetSkewAngle()Obtient l’angle d’inclinaison. Cette méthode est applicable aux documents texte numérisés, pour déterminer l’angle d’inclinaison lors de la numérisation.
override Grayscale()Transformation d’une image en sa représentation en niveaux de gris
LoadArgb32Pixels(Rectangle)Charge les pixels ARGB 32 bits.
LoadArgb64Pixels(Rectangle)Charge les pixels ARGB 64 bits.
LoadCmyk32Pixels(Rectangle)Charge les pixels au format CMJN.
LoadContents(LoadOptions)Obtient le contenu de l’image intégrée ou liée du calque d’objet intelligent.
LoadPartialArgb32Pixels(Rectangle, IPartialArgb32PixelLoader)Charge les pixels ARGB 32 bits partiellement par packs.
LoadPartialPixels(Rectangle, IPartialPixelLoader)Charge les pixels partiellement par packs.
LoadPixels(Rectangle)Charge les pixels.
LoadRawData(Rectangle, RawDataSettings, IPartialRawDataLoader)Charge les données brutes.
LoadRawData(Rectangle, Rectangle, RawDataSettings, IPartialRawDataLoader)Charge les données brutes.
virtual MergeLayerTo(Layer)Fusionne le calque avec le calque spécifié
NewSmartObjectViaCopy()Crée un nouveau calque d’objet intelligent en copiant celui-ci. Reproduit Calque -> Objets intelligents -> Nouvel objet intelligent via la fonctionnalité de copie d’Adobe� Photoshop�. Notez qu’il n’est activé que pour les objets intelligents intégrés car l’image intégrée est également copié. Si vous souhaitez partager l’image intégrée, utilisezDuplicateLayer méthode.
NormalizeAngle()Normalise l’angle. Cette méthode est applicable aux documents texte numérisés pour se débarrasser de la numérisation biaisée. Cette méthode utiliseGetSkewAngle etRotate méthodes.
virtual NormalizeAngle(bool, Color)Normalise l’angle. Cette méthode est applicable aux documents texte numérisés pour se débarrasser de la numérisation biaisée. Cette méthode utiliseGetSkewAngle etRotate méthodes.
ReadArgb32ScanLine(int)Lit toute la ligne de balayage par l’index de ligne de balayage spécifié.
ReadScanLine(int)Lit toute la ligne de balayage par l’index de ligne de balayage spécifié.
RelinkToFile(string)Relie à nouveau l’objet intelligent lié à un nouveau fichier. Il n’est pas nécessaire d’appeler la méthode UpdateModifiedContent par la suite.
ReplaceColor(Color, byte, Color)Remplace une couleur par une autre avec la différence autorisée et conserve la valeur alpha d’origine pour enregistrer des bords lisses.
virtual ReplaceColor(int, byte, int)Remplace une couleur par une autre avec la différence autorisée et conserve la valeur alpha d’origine pour enregistrer des bords lisses.
ReplaceContents(Image)Remplace le contenu de l’objet intelligent intégré dans la couche d’objet intelligent.
ReplaceContents(string)Remplace le contenu par un fichier. Il n’est pas nécessaire d’appeler la méthode UpdateModifiedContent par la suite.
ReplaceContents(Image, ResolutionSetting)Remplace le contenu de l’objet intelligent intégré dans la couche d’objet intelligent.
ReplaceContents(string, ResolutionSetting)Remplace le contenu par un fichier. Il n’est pas nécessaire d’appeler la méthode UpdateModifiedContent par la suite.
ReplaceNonTransparentColors(Color)Remplace toutes les couleurs non transparentes par une nouvelle couleur et conserve la valeur alpha d’origine pour économiser des bords lisses. Remarque : si vous l’utilisez sur des images sans transparence, toutes les couleurs seront remplacées par une seule.
virtual ReplaceNonTransparentColors(int)Remplace toutes les couleurs non transparentes par une nouvelle couleur et conserve la valeur alpha d’origine pour économiser des bords lisses. Remarque : si vous l’utilisez sur des images sans transparence, toutes les couleurs seront remplacées par une seule.
Resize(int, int)Redimensionne l’image. Le défautLeftTopToLeftTopest utilisé.
override Resize(int, int, ImageResizeSettings)Redimensionne l’image.
override Resize(int, int, ResizeType)Redimensionne l’image.
ResizeHeightProportionally(int)Redimensionne la hauteur proportionnellement.
virtual ResizeHeightProportionally(int, ImageResizeSettings)Redimensionne la hauteur proportionnellement.
virtual ResizeHeightProportionally(int, ResizeType)Redimensionne la hauteur proportionnellement.
ResizeWidthProportionally(int)Redimensionne la largeur proportionnellement.
virtual ResizeWidthProportionally(int, ImageResizeSettings)Redimensionne la largeur proportionnellement.
virtual ResizeWidthProportionally(int, ResizeType)Redimensionne la largeur proportionnellement.
virtual Rotate(float)Faire pivoter l’image autour du centre.
override Rotate(float, bool, Color)Faire pivoter l’image autour du centre.
override RotateFlip(RotateFlipType)Fait pivoter, retourne ou fait pivoter et retourne l’image.
Save()Enregistre les données d’image dans le flux sous-jacent.
override Save(Stream)Enregistre les données de l’objet dans le flux spécifié.
Save(string)Enregistre les données de l’objet à l’emplacement de fichier spécifié.
Save(Stream, ImageOptionsBase)Enregistre les données de l’image dans le flux spécifié dans le format de fichier spécifié en fonction des options d’enregistrement.
override Save(string, bool)Enregistre les données de l’objet à l’emplacement de fichier spécifié.
override Save(string, ImageOptionsBase)Enregistre les données de l’objet à l’emplacement de fichier spécifié dans le format de fichier spécifié en fonction des options d’enregistrement.
override Save(Stream, ImageOptionsBase, Rectangle)Enregistre les données de l’image dans le flux spécifié dans le format de fichier spécifié en fonction des options d’enregistrement.
override Save(string, ImageOptionsBase, Rectangle)Enregistre les données de l’objet à l’emplacement de fichier spécifié dans le format de fichier spécifié en fonction des options d’enregistrement.
SaveArgb32Pixels(Rectangle, int[])Enregistre les pixels ARGB 32 bits.
SaveCmyk32Pixels(Rectangle, int[])Enregistre les pixels.
SavePixels(Rectangle, Color[])Enregistre les pixels.
SaveRawData(byte[], int, Rectangle, RawDataSettings)Enregistre les données brutes.
SetArgb32Pixel(int, int, int)Définit un pixel ARGB 32 bits d’image pour la position spécifiée.
override SetPalette(IColorPalette, bool)Définit la palette d’images.
SetPixel(int, int, Color)Définit un pixel d’image pour la position spécifiée.
virtual SetResolution(double, double)Définit la résolution pour ceRasterImage .
ShallowCopy()Crée une copie superficielle du calque actuel. Veuillezhttps://msdn.microsoft.com/ru-ru/library/system.object.memberwiseclone(v=vs.110).aspx pour explication.
virtual ToBitmap()Convertit l’image raster en bitmap.
UpdateModifiedContent()Met à jour le cache d’image de la couche d’objet intelligent avec le contenu modifié.
WriteArgb32ScanLine(int, int[])Écrit toute la ligne de balayage dans l’index de ligne de balayage spécifié.
WriteScanLine(int, Color[])Écrit toute la ligne de balayage dans l’index de ligne de balayage spécifié.

Exemples

Le code suivant illustre la prise en charge des objets intelligents intégrés.

[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));
    }
}

// Cet exemple montre comment modifier le calque d'objet intelligent dans le fichier PSD et exporter/mettre à jour le contenu intégré d'origine de l'objet intelligent.
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);

        // Exportons l'image de l'objet intelligent intégré à partir du calque d'objet intelligent PSD
        smartObjectLayer.ExportContents(exportPath);

        // Vérifions si l'image d'origine est correctement enregistrée
        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);

            // Inversons l'image originale de l'objet intelligent
            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);

            // Remplaçons l'image de l'objet intelligent intégré dans la couche PSD
            smartObjectLayer.ReplaceContents(innerImage);
        }

        // Vérifions si l'image mise à jour est correctement enregistrée
        image.Save(psd2OutputPath, new PsdOptions(image));
        image.Save(png2OutputPath, new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
    }
}

Voir également