Class SmartObjectLayer

SmartObjectLayer class

Definisce la classe SmartObjectLayer che contiene l’oggetto incorporato nel file PSD o collegato nel file esterno. Con gli oggetti avanzati, puoi: Eseguire trasformazioni non distruttive. Puoi ridimensionare, ruotare, inclinare, distorcere, trasformare la prospettiva o deformare un livello senza perdere i dati o la qualità dell’immagine originale perché le trasformazioni non influiscono sui dati originali. Lavora con dati vettoriali, come la grafica vettoriale di Illustrator, che altrimenti verrebbe rasterizzato. Esegui filtraggio non distruttivo. Puoi modificare i filtri applicati agli oggetti avanzati in qualsiasi momento. Modifica un oggetto avanzato e aggiorna automaticamente tutte le sue istanze collegate. Applica una maschera di livello collegata o non collegata al livello dell’oggetto avanzato. Prova vari design con basso- immagini segnaposto di risoluzione che in seguito sostituirai con le versioni finali. In Adobe� Photoshop�, puoi incorporare il contenuto di un’immagine in un documento PSD. Ulteriori informazioni sono disponibili qui:https://helpx.adobe.com/photoshop/using/create-smart-objects.html Un livello con un oggetto avanzato incorporato contiene risorse posizionate (PlLd) e SoLd con proprietà dell’oggetto avanzato. La risorsa PlLd può essere isolata per le versioni PSD precedenti alla 10. Queste risorse contengono l’UniqueId di LiFdDataSource nella Lnk2Resource globale con l’oggetto avanzato incorporato filename e altri parametri, incluso il contenuto del file incorporato nel formato originale come array di byte.

public class SmartObjectLayer : Layer

Proprietà

NomeDescrizione
AutoAdjustPalette { get; set; }Ottiene o imposta un valore che indica se la regolazione automatica della tavolozza.
virtual BackgroundColor { get; set; }Ottiene o imposta un valore per il colore di sfondo.
override BitsPerPixel { get; }Ottiene i bit dell’immagine per numero di pixel.
BlendingOptions { get; }Ottiene le opzioni di fusione.
virtual BlendModeKey { get; set; }Ottiene o imposta la chiave della modalità di fusione.
BlendModeSignature { get; }Ottiene la firma della modalità di fusione.
Bottom { get; set; }Ottiene o imposta la posizione del livello inferiore.
Bounds { get; }Ottiene i limiti dell’immagine.
BufferSizeHint { get; set; }Ottiene o imposta l’hint della dimensione del buffer che è definita dimensione massima consentita per tutti i buffer interni.
ChannelInformation { get; set; }Ottiene o imposta le informazioni sul canale.
ChannelsCount { get; }Ottiene il conteggio dei canali del livello.
Clipping { get; set; }Ottiene o imposta il ritaglio del livello. 0 = base, 1 = non base.
Container { get; }Ottiene ilImage contenitore.
Contents { get; set; }Ottiene o imposta i contenuti del livello dell’oggetto avanzato. Il contenuto dell’oggetto avanzato incorporato è il file di immagine raw incorporato:Data e le sue proprietà. Il contenuto dell’oggetto intelligente collegato è il contenuto non elaborato del file immagine collegato se disponibile e le sue proprietà:LiFeDataSource . Non supportiamo il caricamento dalla libreria grafica di Adobe� Photoshop� �� quandoIsLibraryLink è vero. Per i normali file di collegamento, all’inizio, usiamoRelativePath per cercare il file relativamente nel percorso dell’immagine di origineSourceImagePath , se non è disponibile guardiamoFullPath , in caso contrario, cerchiamo il file di collegamento nella stessa directory in cui si trova la nostra immagine:SourceImagePath .
ContentsBounds { get; set; }Ottiene o imposta i limiti del contenuto dell’oggetto avanzato.
ContentsSource { get; set; }Ottiene o imposta l’origine del contenuto dell’oggetto avanzato.
ContentType { get; }Ottiene il tipo di contenuto del livello dell’oggetto avanzato. Il contenuto dell’oggetto avanzato incorporato è il file di immagine raw incorporato:Data . Il contenuto dell’oggetto intelligente collegato è il contenuto non elaborato del file immagine collegato, se disponibile:LiFeDataSource . Non supportiamo il caricamento dalla libreria grafica di Adobe� Photoshop� �� quandoIsLibraryLink è vero. Per i normali file di collegamento, all’inizio, usiamoRelativePath per cercare il file relativamente nel percorso dell’immagine di origineSourceImagePath , se non è disponibile guardiamoFullPath , in caso contrario, cerchiamo il file di collegamento nella stessa directory in cui si trova la nostra immagine:SourceImagePath .
DataStreamContainer { get; }Ottiene il flusso di dati dell’oggetto.
DisplayName { get; set; }Ottiene o imposta il nome visualizzato del layer.
Disposed { get; }Ottiene un valore che indica se questa istanza è stata eliminata.
ExtraLength { get; }Ottiene la lunghezza in byte delle informazioni extra sul layer.
virtual FileFormat { get; }Ottiene un valore di file format
Filler { get; set; }Ottiene o imposta il riempimento del livello.
FillOpacity { get; set; }Ottiene o imposta l’opacità del riempimento.
Flags { get; set; }Ottiene o imposta i flag del livello. bit 0 = trasparenza protetta; bit 1 = visibile; bit 2 = obsoleto; bit 3 = 1 per Photoshop 5.0 e versioni successive, indica se il bit 4 contiene informazioni utili; bit 4 = dati pixel irrilevanti per l’aspetto del documento.
override HasAlpha { get; }Ottiene un valore che indica se questa istanza ha alpha.
virtual HasBackgroundColor { get; set; }Ottiene o imposta un valore che indica se l’immagine ha un colore di sfondo.
virtual HasTransparentColor { get; set; }Ottiene un valore che indica se l’immagine ha un colore trasparente.
override Height { get; }Ottiene l’altezza dell’immagine.
virtual HorizontalResolution { get; set; }Ottiene o imposta la risoluzione orizzontale, in pixel per pollice, di thisRasterImage .
virtual ImageOpacity { get; }Ottiene l’opacità di questa immagine.
InterruptMonitor { get; set; }Ottiene o imposta il monitor di interrupt.
override IsCached { get; }Ottiene un valore che indica se i dati dell’immagine sono attualmente memorizzati nella cache.
IsRawDataAvailable { get; }Ottiene un valore che indica se è disponibile il caricamento dei dati non elaborati.
IsVisible { get; set; }Ottiene o imposta un valore che indica se il livello è visibile
virtual IsVisibleInGroup { get; }Ottiene un valore che indica se questa istanza è visibile nel gruppo (se il layer non è nel gruppo significa gruppo radice).
LayerBlendingRangesData { get; set; }Ottiene o imposta i dati degli intervalli di fusione dei livelli.
LayerCreationDateTime { get; set; }Ottiene o imposta la data e l’ora di creazione del layer.
LayerLock { get; set; }Ottiene o imposta il blocco del livello. Si noti che se il flag LayerFlags.TransparencyProtected è impostato, verrà sovrascritto dal flag di blocco del livello. Per restituire il flag LayerFlags.TransparencyProtected è necessario applicare l’opzione layer layer.Flags |= LayerFlags.TransparencyProtected
LayerMaskData { get; set; }Ottiene o imposta i dati della maschera di livello.
LayerOptions { get; }Ottiene le opzioni del livello.
Left { get; set; }Ottiene o imposta la posizione del livello sinistro.
Length { get; }Ottiene la lunghezza complessiva del livello in byte.
Name { get; set; }Ottiene o imposta il nome del livello.
Opacity { get; set; }Ottiene o imposta l’opacità del livello. 0 = trasparente, 255 = opaco.
Palette { get; set; }Ottiene o imposta la tavolozza dei colori. La tavolozza dei colori non viene utilizzata quando i pixel sono rappresentati direttamente.
virtual PremultiplyComponents { get; set; }Ottiene o imposta un valore che indica se i componenti dell’immagine devono essere premoltiplicati.
RawCustomColorConverter { get; set; }Ottiene o imposta il convertitore di colore personalizzato
virtual RawDataFormat { get; }Ottiene il formato dei dati grezzi.
RawDataSettings { get; }Ottiene le impostazioni dei dati non elaborati correnti. Nota quando si utilizzano queste impostazioni i dati vengono caricati senza conversione.
RawFallbackIndex { get; set; }Ottiene o imposta l’indice di fallback da utilizzare quando l’indice della tavolozza è fuori limite
RawIndexedColorConverter { get; set; }Ottiene o imposta il convertitore di colore indicizzato
virtual RawLineSize { get; }Ottiene la dimensione della riga non elaborata in byte.
Resources { get; set; }Ottiene o imposta le risorse del livello.
Right { get; set; }Ottiene o imposta la giusta posizione del livello.
SheetColorHighlight { get; set; }Ottiene o imposta l’evidenziazione del colore del foglio decorativo nell’elenco dei layer
Size { get; }Ottiene la dimensione dell’immagine.
SmartFilters { get; }Ottiene i filtri intelligenti.
SmartObjectProvider { get; }Ottiene il fornitore di oggetti intelligenti.
Top { get; set; }Ottiene o imposta la posizione del livello superiore.
virtual TransparentColor { get; set; }Ottiene il colore trasparente dell’immagine.
virtual UpdateXmpData { get; set; }Ottiene o imposta un valore che indica se aggiornare i metadati XMP.
virtual UseRawData { get; set; }Ottiene o imposta un valore che indica se utilizzare il caricamento dei dati non elaborati quando è disponibile il caricamento dei dati non elaborati.
virtual VerticalResolution { get; set; }Ottiene o imposta la risoluzione verticale, in pixel per pollice, di thisRasterImage .
override Width { get; }Ottiene la larghezza dell’immagine.
virtual XmpData { get; set; }Ottiene o imposta i metadati XMP.

Metodi

NomeDescrizione
AddLayerMask(LayerMaskData)Aggiunge la maschera al livello corrente.
override AdjustBrightness(int)Regola la luminosità dell’immagine.
override AdjustContrast(float)Contrasto immagine
override AdjustGamma(float)Correzione gamma di un’immagine.
override AdjustGamma(float, float, float)Correzione gamma di un’immagine.
override BinarizeBradley(double)Binarizzazione di un’immagine utilizzando l’algoritmo di soglia adattiva di Bradley utilizzando la soglia integrale dell’immagine
override BinarizeBradley(double, int)Binarizzazione di un’immagine utilizzando l’algoritmo di soglia adattiva di Bradley utilizzando la soglia integrale dell’immagine
override BinarizeFixed(byte)Binarizzazione di un’immagine con soglia predefinita
override BinarizeOtsu()Binarizzazione di un’immagine con Otsu thresholding
override CacheData()Memorizza i dati nella cache e garantisce che non venga eseguito alcun caricamento di dati aggiuntivi dal sottostanteDataStreamContainer .
CanSave(ImageOptionsBase)Determina se l’immagine può essere salvata nel formato di file specificato rappresentato dalle opzioni di salvataggio passate.
ConvertToLinked(string)Converte questo oggetto smart incorporato in un oggetto smart collegato.
override Crop(Rectangle)Ritaglio dell’immagine.
virtual Crop(int, int, int, int)Ritaglia l’immagine con spostamenti.
Dispose()Elimina l’istanza corrente.
Dither(DitheringMethod, int)Esegue il dithering sull’immagine corrente.
override Dither(DitheringMethod, int, IColorPalette)Esegue il dithering sull’immagine corrente.
DrawImage(Point, RasterImage)Disegna l’immagine sul livello.
DuplicateLayer()Crea un nuovo livello oggetto avanzato copiando questo. Nota che per gli oggetti avanzati incorporati l’immagine incorporata è condivisa. Se vuoi copiare l’immagine incorporata usaNewSmartObjectViaCopy metodo.
EmbedLinked()Incorpora l’oggetto intelligente collegato in questo livello.
ExportContents(string)Esporta i contenuti incorporati o collegati in un file.
virtual Filter(Rectangle, FilterOptionsBase)Filtra il rettangolo specificato.
GetArgb32Pixel(int, int)Ottiene un pixel ARGB a 32 bit dell’immagine.
GetDefaultArgb32Pixels(Rectangle)Ottiene l’array di pixel ARGB a 32 bit predefinito.
virtual GetDefaultOptions(object[])Ottiene le opzioni predefinite.
GetDefaultPixels(Rectangle, IPartialArgb32PixelLoader)Ottiene l’array di pixel predefinito utilizzando il caricatore parziale di pixel.
GetDefaultRawData(Rectangle, RawDataSettings)Ottiene l’array di dati non elaborati predefinito.
GetDefaultRawData(Rectangle, IPartialRawDataLoader, RawDataSettings)Ottiene l’array di dati non elaborati predefinito utilizzando il caricamento parziale dei pixel.
override GetHashCode()Restituisce un codice hash per questa istanza.
virtual GetModifyDate(bool)Ottiene la data e l’ora dell’ultima modifica dell’immagine della risorsa.
virtual GetOriginalOptions()Ottiene le opzioni in base alle impostazioni del file originale. Questo può essere utile per mantenere invariati la profondità di bit e altri parametri dell’immagine originale. Ad esempio, se carichiamo un’immagine PNG in bianco e nero con 1 bit per pixel e poi salvalo usando the Save metodo, verrà prodotta l’immagine PNG di output con 8 bit per pixel. Per evitarlo e salvare l’immagine PNG con 1 bit per pixel, utilizzare questo metodo per ottenere le opzioni di salvataggio corrispondenti e passarle alSavemetodo come secondo parametro.
GetPixel(int, int)Ottiene un pixel dell’immagine.
GetSkewAngle()Ottiene l’angolo di inclinazione. Questo metodo è applicabile ai documenti di testo scansionati, per determinare l’angolo di inclinazione durante la scansione.
override Grayscale()Trasformazione di un’immagine nella sua rappresentazione in scala di grigi
LoadArgb32Pixels(Rectangle)Carica pixel ARGB a 32 bit.
LoadArgb64Pixels(Rectangle)Carica pixel ARGB a 64 bit.
LoadCmyk32Pixels(Rectangle)Carica pixel in formato CMYK.
LoadContents(LoadOptions)Ottiene il contenuto dell’immagine incorporata o collegata del livello degli oggetti avanzati.
LoadPartialArgb32Pixels(Rectangle, IPartialArgb32PixelLoader)Carica i pixel ARGB a 32 bit parzialmente per pacchetti.
LoadPartialPixels(Rectangle, IPartialPixelLoader)Carica i pixel parzialmente per pacchetti.
LoadPixels(Rectangle)Carica i pixel.
LoadRawData(Rectangle, RawDataSettings, IPartialRawDataLoader)Carica i dati grezzi.
LoadRawData(Rectangle, Rectangle, RawDataSettings, IPartialRawDataLoader)Carica i dati grezzi.
virtual MergeLayerTo(Layer)Unisce il livello al livello specificato
NewSmartObjectViaCopy()Crea un nuovo livello oggetto avanzato copiando questo. Riproduce Livello -> Oggetti avanzati -> Nuovo oggetto avanzato tramite la funzionalità Copia di Adobe� Photoshop�. Si noti che è abilitato solo per gli oggetti avanzati incorporati perché l’immagine incorporata viene anche copiato. Se si desidera condividere l’immagine incorporata, utilizzareDuplicateLayer metodo.
NormalizeAngle()Normalizza l’angolo. Questo metodo è applicabile ai documenti di testo scansionati per eliminare la scansione inclinata. Questo metodo utilizzaGetSkewAngle ERotate metodi.
virtual NormalizeAngle(bool, Color)Normalizza l’angolo. Questo metodo è applicabile ai documenti di testo scansionati per eliminare la scansione inclinata. Questo metodo utilizzaGetSkewAngle ERotate metodi.
ReadArgb32ScanLine(int)Legge l’intera linea di scansione in base all’indice della linea di scansione specificato.
ReadScanLine(int)Legge l’intera linea di scansione in base all’indice della linea di scansione specificato.
RelinkToFile(string)Ricollega l’oggetto smart collegato a un nuovo file. Non è necessario chiamare successivamente il metodo UpdateModifiedContent.
ReplaceColor(Color, byte, Color)Sostituisce un colore con un altro con la differenza consentita e conserva il valore alfa originale per salvare i bordi smussati.
virtual ReplaceColor(int, byte, int)Sostituisce un colore con un altro con la differenza consentita e conserva il valore alfa originale per salvare i bordi smussati.
ReplaceContents(Image)Sostituisce i contenuti degli oggetti intelligenti incorporati nel livello degli oggetti intelligenti.
ReplaceContents(string)Sostituisce il contenuto con un file. Non è necessario chiamare successivamente il metodo UpdateModifiedContent.
ReplaceContents(Image, ResolutionSetting)Sostituisce i contenuti degli oggetti intelligenti incorporati nel livello degli oggetti intelligenti.
ReplaceContents(string, ResolutionSetting)Sostituisce il contenuto con un file. Non è necessario chiamare successivamente il metodo UpdateModifiedContent.
ReplaceNonTransparentColors(Color)Sostituisce tutti i colori non trasparenti con un nuovo colore e conserva il valore alfa originale per salvare i bordi smussati. Nota: se lo usi su immagini senza trasparenza, tutti i colori verranno sostituiti con uno solo.
virtual ReplaceNonTransparentColors(int)Sostituisce tutti i colori non trasparenti con un nuovo colore e conserva il valore alfa originale per salvare i bordi smussati. Nota: se lo usi su immagini senza trasparenza, tutti i colori verranno sostituiti con uno solo.
Resize(int, int)Ridimensiona l’immagine. Il predefinitoLeftTopToLeftTopviene utilizzato.
override Resize(int, int, ImageResizeSettings)Ridimensiona l’immagine.
override Resize(int, int, ResizeType)Ridimensiona l’immagine.
ResizeHeightProportionally(int)Ridimensiona proporzionalmente l’altezza.
virtual ResizeHeightProportionally(int, ImageResizeSettings)Ridimensiona proporzionalmente l’altezza.
virtual ResizeHeightProportionally(int, ResizeType)Ridimensiona proporzionalmente l’altezza.
ResizeWidthProportionally(int)Ridimensiona proporzionalmente la larghezza.
virtual ResizeWidthProportionally(int, ImageResizeSettings)Ridimensiona proporzionalmente la larghezza.
virtual ResizeWidthProportionally(int, ResizeType)Ridimensiona proporzionalmente la larghezza.
virtual Rotate(float)Ruota l’immagine attorno al centro.
override Rotate(float, bool, Color)Ruota l’immagine attorno al centro.
override RotateFlip(RotateFlipType)Ruota, capovolge o ruota e capovolge l’immagine.
Save()Salva i dati dell’immagine nel flusso sottostante.
override Save(Stream)Salva i dati dell’oggetto nel flusso specificato.
Save(string)Salva i dati dell’oggetto nella posizione file specificata.
Save(Stream, ImageOptionsBase)Salva i dati dell’immagine nel flusso specificato nel formato di file specificato in base alle opzioni di salvataggio.
override Save(string, bool)Salva i dati dell’oggetto nella posizione file specificata.
override Save(string, ImageOptionsBase)Salva i dati dell’oggetto nella posizione file specificata nel formato file specificato in base alle opzioni di salvataggio.
override Save(Stream, ImageOptionsBase, Rectangle)Salva i dati dell’immagine nel flusso specificato nel formato di file specificato in base alle opzioni di salvataggio.
override Save(string, ImageOptionsBase, Rectangle)Salva i dati dell’oggetto nella posizione file specificata nel formato file specificato in base alle opzioni di salvataggio.
SaveArgb32Pixels(Rectangle, int[])Salva i pixel ARGB a 32 bit.
SaveCmyk32Pixels(Rectangle, int[])Salva i pixel.
SavePixels(Rectangle, Color[])Salva i pixel.
SaveRawData(byte[], int, Rectangle, RawDataSettings)Salva i dati grezzi.
SetArgb32Pixel(int, int, int)Imposta un pixel ARGB a 32 bit dell’immagine per la posizione specificata.
override SetPalette(IColorPalette, bool)Imposta la tavolozza dell’immagine.
SetPixel(int, int, Color)Imposta un pixel dell’immagine per la posizione specificata.
virtual SetResolution(double, double)Imposta la risoluzione per questoRasterImage .
ShallowCopy()Crea una copia superficiale del livello corrente. Per favorehttps://msdn.microsoft.com/ru-ru/library/system.object.memberwiseclone(v=vs.110).aspx per spiegazioni.
virtual ToBitmap()Converte l’immagine raster in bitmap.
UpdateModifiedContent()Aggiorna la cache dell’immagine del livello degli oggetti intelligenti con il contenuto modificato.
WriteArgb32ScanLine(int, int[])Scrive l’intera linea di scansione nell’indice della linea di scansione specificato.
WriteScanLine(int, Color[])Scrive l’intera linea di scansione nell’indice della linea di scansione specificato.

Esempi

Il codice seguente illustra il supporto degli oggetti Embedded Smart.

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

// Questo esempio mostra come modificare il livello degli oggetti avanzati nel file PSD ed esportare/aggiornare i contenuti incorporati originali degli oggetti avanzati.
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);

        // Esportiamo l'immagine dell'oggetto avanzato incorporato dal livello dell'oggetto avanzato PSD
        smartObjectLayer.ExportContents(exportPath);

        // Controlliamo se l'immagine originale è stata salvata correttamente
        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);

            // Invertiamo l'immagine dell'oggetto intelligente originale
            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);

            // Sostituiamo l'immagine dell'oggetto smart incorporata nel livello PSD
            smartObjectLayer.ReplaceContents(innerImage);
        }

        // Controlliamo se l'immagine aggiornata è stata salvata correttamente
        image.Save(psd2OutputPath, new PsdOptions(image));
        image.Save(png2OutputPath, new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
    }
}

Guarda anche