Class SmartObjectLayer

SmartObjectLayer class

Definierar SmartObjectLayer-klassen som innehåller inbäddade i PSD-filen eller länkade smarta objekt i den externa filen. Med Smart Objects kan du: Utföra oförstörande transformationer. Du kan skala, rotera, snedställa, förvränga, perspektivomvandla eller förvränga ett lager utan att förlora originalbilddata eller kvalitet eftersom omvandlingarna inte påverkar originaldata. Arbeta med vektordata, som vektorgrafik från Illustrator, som annars skulle rasteriseras. Utför oförstörande filtrering. Du kan redigera filter som tillämpas på smarta objekt när som helst. Redigera ett smart objekt och uppdatera alla dess länkade instanser automatiskt. Använd en lagermask som antingen är länkad eller olänkad till smarta objektlagret. Prova olika designs med låg- platshållarbilder med upplösning som du senare ersätter med slutgiltiga versioner. I Adobe� Photoshop� kan du bädda in innehållet i en bild i ett PSD-dokument. Mer information finns här:https://helpx.adobe.com/photoshop/using/create-smart-objects.html Ett lager med ett inbäddat smart objekt innehåller placerade (PlLd) och SoLd-resurser med smarta objektegenskaper. PlLd-resursen kan vara ensam för PSD-versioner äldre än 10. Dessa resurser innehåller UniqueId för LiFdDataSource i den globala Lnkbed2Resourcen med embedded. filnamn och andra parametrar, inklusive det inbäddade filinnehållet i originalformatet som en byte-array.

public class SmartObjectLayer : Layer

Egenskaper

namnBeskrivning
AutoAdjustPalette { get; set; }Hämtar eller ställer in ett värde som anger om paletten för automatisk justering.
virtual BackgroundColor { get; set; }Hämtar eller ställer in ett värde för bakgrundsfärgen.
override BitsPerPixel { get; }Hämtar bildbitar per pixelantal.
BlendingOptions { get; }Får blandningsalternativen.
virtual BlendModeKey { get; set; }Hämtar eller ställer in blandningslägestangenten.
BlendModeSignature { get; }Får blandningslägessignaturen.
Bottom { get; set; }Hämtar eller ställer in bottenskiktets position.
Bounds { get; }Får bildens gränser.
BufferSizeHint { get; set; }Hämtar eller ställer in buffertstorlekstipset som är definierat som högsta tillåtna storlek för alla interna buffertar.
ChannelInformation { get; set; }Hämtar eller ställer in kanalinformationen.
ChannelsCount { get; }Hämtar lagrets kanaler.
Clipping { get; set; }Hämtar eller ställer in lagerklippningen. 0 = bas, 1 = icke-bas.
Container { get; }FårImage container.
Contents { get; set; }Hämtar eller ställer in innehållet i lagret för smarta objekt. Innehållet för det inbäddade smarta objektet är den inbäddade råbildsfilen:Data och dess egenskaper. Det länkade smarta objektets innehåll är råinnehållet i den länkade bildfilen om den är tillgänglig och dess egenskaper:LiFeDataSource . Vi stöder inte laddning från Adobe� Photoshop� �� Graphics Library närIsLibraryLink är sant. För vanliga länkfiler använder vi förstRelativePath för att leta efter filen relativ till källbildens sökvägSourceImagePath , om den inte är tillgänglig tittar vi påFullPath , om inte så letar vi efter länkfilen i samma katalog där vår bild är:SourceImagePath .
ContentsBounds { get; set; }Hämtar eller ställer in gränserna för innehållet i smarta objekt.
ContentsSource { get; set; }Hämtar eller ställer in det smarta objektets innehålls källa.
ContentType { get; }Hämtar typen av innehåll i lagret för smarta objekt. Innehållet i det inbäddade smarta objektet är den inbäddade råbildsfilen:Data . Det länkade smarta objektets innehåll är råinnehållet i den länkade bildfilen om den är tillgänglig:LiFeDataSource . Vi stöder inte laddning från Adobe� Photoshop� �� Graphics Library närIsLibraryLink är sant. För vanliga länkfiler använder vi förstRelativePath för att leta efter filen relativ till källbildens sökvägSourceImagePath , om den inte är tillgänglig tittar vi påFullPath , om inte så letar vi efter länkfilen i samma katalog där vår bild är:SourceImagePath .
DataStreamContainer { get; }Hämtar objektets dataström.
DisplayName { get; set; }Hämtar eller ställer in visningsnamnet för lagret.
Disposed { get; }Får ett värde som indikerar om denna instans är bortskaffad.
ExtraLength { get; }Får lagret extra informationslängd i byte.
virtual FileFormat { get; }Får värdet filformat
Filler { get; set; }Hämtar eller ställer in lagerfyllmedlet.
FillOpacity { get; set; }Hämtar eller ställer in fyllningsopaciteten.
Flags { get; set; }Hämtar eller ställer in lagerflaggorna. bit 0 = transparensskyddad; bit 1 = synlig; bit 2 = föråldrad; bit 3 = 1 för Photoshop 5.0 och senare, talar om om bit 4_x00 har användbar information; pixeldata irrelevant för dokumentets utseende.
override HasAlpha { get; }Får ett värde som indikerar om denna instans har alpha.
virtual HasBackgroundColor { get; set; }Hämtar eller ställer in ett värde som anger om bilden har bakgrundsfärg.
virtual HasTransparentColor { get; set; }Får ett värde som indikerar om bilden har transparent färg.
override Height { get; }Hämtar bildhöjden.
virtual HorizontalResolution { get; set; }Hämtar eller ställer in den horisontella upplösningen, i pixlar per tum, för dettaRasterImage .
virtual ImageOpacity { get; }Får opacitet för denna bild.
InterruptMonitor { get; set; }Hämtar eller ställer in avbrottsmonitorn.
override IsCached { get; }Får ett värde som indikerar om bilddata är cachad för närvarande.
IsRawDataAvailable { get; }Får ett värde som anger om rådataladdning är tillgänglig.
IsVisible { get; set; }Hämtar eller ställer in ett värde som anger om lagret är synligt
virtual IsVisibleInGroup { get; }Får ett värde som indikerar om denna instans är synlig i gruppen (om lagret inte är i gruppen betyder det rotgrupp).
LayerBlendingRangesData { get; set; }Hämtar eller ställer in data för lagerblandningsintervall.
LayerCreationDateTime { get; set; }Hämtar eller ställer in datum för skapande av lagret.
LayerLock { get; set; }Hämtar eller ställer in lagerlåset. Observera att om flaggan LayerFlags.TransparencyProtected är inställd kommer den att skrivas över av lagerlåsflaggan. För att returnera LayerFlags.TransparencyProtected-flaggan måste ansöka om lageralternativet layer.Flags |= Layer0Flags_TransparencyProtected_TransparencyProtected.TransparencyProtected.
LayerMaskData { get; set; }Hämtar eller ställer in lagermaskdata.
LayerOptions { get; }Hämtar lageralternativen.
Left { get; set; }Hämtar eller ställer in vänster lagerposition.
Length { get; }Får den totala lagerlängden i byte.
Name { get; set; }Hämtar eller ställer in lagernamnet.
Opacity { get; set; }Hämtar eller ställer in lagrets opacitet. 0 = transparent, 255 = ogenomskinlig.
Palette { get; set; }Hämtar eller ställer in färgpaletten. Färgpaletten används inte när pixlar representeras direkt.
virtual PremultiplyComponents { get; set; }Hämtar eller ställer in ett värde som anger om bildkomponenterna måste förmultipliceras.
RawCustomColorConverter { get; set; }Hämtar eller ställer in den anpassade färgomvandlaren
virtual RawDataFormat { get; }Hämtar rådataformatet.
RawDataSettings { get; }Hämtar aktuella rådatainställningar. Observera att när du använder dessa inställningar laddas data utan konvertering.
RawFallbackIndex { get; set; }Hämtar eller ställer in reservindex som ska användas när palettindex är utanför gränserna
RawIndexedColorConverter { get; set; }Hämtar eller ställer in den indexerade färgomvandlaren
virtual RawLineSize { get; }Hämtar den rå radstorleken i byte.
Resources { get; set; }Hämtar eller ställer in lagerresurserna.
Right { get; set; }Får eller ställer in rätt lagerposition.
SheetColorHighlight { get; set; }Hämtar eller ställer in den dekorativa arkets färgmarkering i lagerlistan
Size { get; }Hämtar bildstorleken.
SmartFilters { get; }Får de smarta filtren.
SmartObjectProvider { get; }Får leverantören av smarta objekt.
Top { get; set; }Hämtar eller ställer in det översta lagrets position.
virtual TransparentColor { get; set; }Får bilden genomskinlig färg.
virtual UpdateXmpData { get; set; }Hämtar eller ställer in ett värde som anger om XMP-metadata ska uppdateras.
virtual UseRawData { get; set; }Hämtar eller ställer in ett värde som anger om rådataladdning ska användas när rådataladdningen är tillgänglig.
virtual VerticalResolution { get; set; }Hämtar eller ställer in den vertikala upplösningen, i pixlar per tum, för dettaRasterImage .
override Width { get; }Hämtar bildens bredd.
virtual XmpData { get; set; }Hämtar eller ställer in XMP-metadata.

Metoder

namnBeskrivning
AddLayerMask(LayerMaskData)Lägger till masken i nuvarande lager.
override AdjustBrightness(int)Justera en ljusstyrka för bilden.
override AdjustContrast(float)Bild kontrasterande
override AdjustGamma(float)Gamma-korrigering av en bild.
override AdjustGamma(float, float, float)Gamma-korrigering av en bild.
override BinarizeBradley(double)Binarisering av en bild med Bradleys adaptiva tröskelalgoritm med integralbildströskelvärde
override BinarizeBradley(double, int)Binarisering av en bild med Bradleys adaptiva tröskelalgoritm med integralbildströskelvärde
override BinarizeFixed(byte)Binarisering av en bild med fördefinierad tröskel
override BinarizeOtsu()Binarisering av en bild med Otsu thresholding
override CacheData()Cachelagrar data och säkerställer att ingen ytterligare dataladdning kommer att utföras från det underliggandeDataStreamContainer .
CanSave(ImageOptionsBase)Bestämmer om bilden kan sparas i det angivna filformatet som representeras av de godkända sparalternativen.
ConvertToLinked(string)Konverterar detta inbäddade smarta objekt till ett länkat smart objekt.
override Crop(Rectangle)Beskär bilden.
virtual Crop(int, int, int, int)Beskär bilden med skiftningar.
Dispose()Tar bort den aktuella instansen.
Dither(DitheringMethod, int)Utför dithering på den aktuella bilden.
override Dither(DitheringMethod, int, IColorPalette)Utför dithering på den aktuella bilden.
DrawImage(Point, RasterImage)Ritar bilden på lager.
DuplicateLayer()Skapar ett nytt smart objektlager genom att kopiera detta. Observera att för inbäddade smarta objekt delas den inbäddade bilden. Om du vill kopiera den inbäddade bilden användNewSmartObjectViaCopy metod.
EmbedLinked()Bäddar in det länkade smarta objektet i detta lager.
ExportContents(string)Exporterar det inbäddade eller länkade innehållet till en fil.
virtual Filter(Rectangle, FilterOptionsBase)Filtrerar den angivna rektangeln.
GetArgb32Pixel(int, int)Får en bild 32-bitars ARGB-pixel.
GetDefaultArgb32Pixels(Rectangle)Hämtar standard 32-bitars ARGB-pixelmatrisen.
virtual GetDefaultOptions(object[])Hämtar standardalternativen.
GetDefaultPixels(Rectangle, IPartialArgb32PixelLoader)Hämtar standardpixelmatrisen med partial pixel loader.
GetDefaultRawData(Rectangle, RawDataSettings)Hämtar standardinställningen för rådata.
GetDefaultRawData(Rectangle, IPartialRawDataLoader, RawDataSettings)Hämtar den förinställda rådatamatrisen med hjälp av partial pixel loader.
override GetHashCode()Returnerar en hash-kod för denna instans.
virtual GetModifyDate(bool)Hämtar datum och tid då resursbilden senast ändrades.
virtual GetOriginalOptions()Hämtar alternativen baserat på de ursprungliga filinställningarna. Detta kan vara till hjälp för att behålla bitdjupet och andra parametrar i originalbilden oförändrade. Om vi till exempel laddar en svartvit PNG-bild med 1 bit per pixel och sedan spara den med hjälp av Save metod, kommer den utgående PNG-bilden med 8-bitar per pixel att produceras. För att undvika det och spara PNG-bild med 1-bit per pixel, använd den här metoden för att få motsvarande sparalternativ och skicka dem tillSavemetod som den andra parametern.
GetPixel(int, int)Får en bildpixel.
GetSkewAngle()Hämtar skevningsvinkeln. Denna metod är tillämplig på skannade textdokument, för att bestämma snedställningsvinkeln vid skanning.
override Grayscale()Transformation av en bild till dess gråskalerepresentation
LoadArgb32Pixels(Rectangle)Laddar 32-bitars ARGB-pixlar.
LoadArgb64Pixels(Rectangle)Laddar 64-bitars ARGB-pixlar.
LoadCmyk32Pixels(Rectangle)Laddar pixlar i CMYK-format.
LoadContents(LoadOptions)Hämtar det inbäddade eller länkade bildinnehållet i det smarta objektlagret.
LoadPartialArgb32Pixels(Rectangle, IPartialArgb32PixelLoader)Laddar 32-bitars ARGB-pixlar delvis i paket.
LoadPartialPixels(Rectangle, IPartialPixelLoader)Laddar pixlar delvis i paket.
LoadPixels(Rectangle)Laddar pixlar.
LoadRawData(Rectangle, RawDataSettings, IPartialRawDataLoader)Laddar rådata.
LoadRawData(Rectangle, Rectangle, RawDataSettings, IPartialRawDataLoader)Laddar rådata.
virtual MergeLayerTo(Layer)Slår ihop lagret till specificerat lager
NewSmartObjectViaCopy()Skapar ett nytt smart objektlager genom att kopiera detta. Återskapar funktionen Layer -> Smart Objects -> New Smart Object via Copy i Adobe� Photoshop�. Observera att det endast är aktiverat för inbäddade smarta objekt eftersom den inbäddade bilden kopieras också. Om du vill dela den inbäddade bilden användDuplicateLayer metod.
NormalizeAngle()Normaliserar vinkeln. Denna metod är tillämplig på skannade textdokument för att bli av med den skeva skanningen. Denna metod använderGetSkewAngle ochRotate metoder.
virtual NormalizeAngle(bool, Color)Normaliserar vinkeln. Denna metod är tillämplig på skannade textdokument för att bli av med den skeva skanningen. Denna metod använderGetSkewAngle ochRotate metoder.
ReadArgb32ScanLine(int)Läser hela skanningslinjen med det angivna skanningslinjeindexet.
ReadScanLine(int)Läser hela skanningslinjen med det angivna skanningslinjeindexet.
RelinkToFile(string)Återlänkar det länkade smarta objektet till en ny fil. Det finns ingen anledning att anropa UpdateModifiedContent-metoden efteråt.
ReplaceColor(Color, byte, Color)Ersätter en färg mot en annan med tillåten skillnad och bevarar det ursprungliga alfavärdet för att spara jämna kanter.
virtual ReplaceColor(int, byte, int)Ersätter en färg mot en annan med tillåten skillnad och bevarar det ursprungliga alfavärdet för att spara jämna kanter.
ReplaceContents(Image)Ersätter det smarta objektinnehållet som är inbäddat i det smarta objektlagret.
ReplaceContents(string)Ersätter innehållet med en fil. Det finns ingen anledning att anropa metoden UpdateModifiedContent efteråt.
ReplaceContents(Image, ResolutionSetting)Ersätter det smarta objektinnehållet som är inbäddat i det smarta objektlagret.
ReplaceContents(string, ResolutionSetting)Ersätter innehållet med en fil. Det finns ingen anledning att anropa metoden UpdateModifiedContent efteråt.
ReplaceNonTransparentColors(Color)Ersätter alla icke-transparenta färger med ny färg och bevarar det ursprungliga alfavärdet för att spara jämna kanter. Obs: om du använder det på bilder utan genomskinlighet kommer alla färger att ersättas med en enda.
virtual ReplaceNonTransparentColors(int)Ersätter alla icke-transparenta färger med ny färg och bevarar det ursprungliga alfavärdet för att spara jämna kanter. Obs: om du använder det på bilder utan genomskinlighet kommer alla färger att ersättas med en enda.
Resize(int, int)Ändrar storleken på bilden. StandardenLeftTopToLeftTopanvänds.
override Resize(int, int, ImageResizeSettings)Ändrar storlek på bilden.
override Resize(int, int, ResizeType)Ändrar storlek på bilden.
ResizeHeightProportionally(int)Ändrar storleken på höjden proportionellt.
virtual ResizeHeightProportionally(int, ImageResizeSettings)Ändrar storleken på höjden proportionellt.
virtual ResizeHeightProportionally(int, ResizeType)Ändrar storleken på höjden proportionellt.
ResizeWidthProportionally(int)Ändrar storleken på bredden proportionellt.
virtual ResizeWidthProportionally(int, ImageResizeSettings)Ändrar storleken på bredden proportionellt.
virtual ResizeWidthProportionally(int, ResizeType)Ändrar storleken på bredden proportionellt.
virtual Rotate(float)Rotera bilden runt mitten.
override Rotate(float, bool, Color)Rotera bilden runt mitten.
override RotateFlip(RotateFlipType)Roterar, vänder eller roterar och vänder bilden.
Save()Sparar bilddata till den underliggande strömmen.
override Save(Stream)Sparar objektets data till den angivna strömmen.
Save(string)Sparar objektets data till den angivna filplatsen.
Save(Stream, ImageOptionsBase)Sparar bildens data till den angivna strömmen i det angivna filformatet enligt sparalternativ.
override Save(string, bool)Sparar objektets data till den angivna filplatsen.
override Save(string, ImageOptionsBase)Sparar objektets data till den angivna filplatsen i det angivna filformatet enligt sparalternativ.
override Save(Stream, ImageOptionsBase, Rectangle)Sparar bildens data till den angivna strömmen i det angivna filformatet enligt sparalternativ.
override Save(string, ImageOptionsBase, Rectangle)Sparar objektets data till den angivna filplatsen i det angivna filformatet enligt sparalternativ.
SaveArgb32Pixels(Rectangle, int[])Sparar 32-bitars ARGB-pixlar.
SaveCmyk32Pixels(Rectangle, int[])Sparar pixlarna.
SavePixels(Rectangle, Color[])Sparar pixlarna.
SaveRawData(byte[], int, Rectangle, RawDataSettings)Sparar rådata.
SetArgb32Pixel(int, int, int)Ställer in en 32-bitars ARGB-pixel för den angivna positionen.
override SetPalette(IColorPalette, bool)Ställer in bildpaletten.
SetPixel(int, int, Color)Ställer in en bildpixel för den angivna positionen.
virtual SetResolution(double, double)Ställer in upplösningen för dettaRasterImage .
ShallowCopy()Skapar en ytlig kopia av det aktuella lagret. Vänligenhttps://msdn.microsoft.com/ru-ru/library/system.object.memberwiseclone(v=vs.110).aspx för förklaring.
virtual ToBitmap()Konverterar rasterbilden till bitmappen.
UpdateModifiedContent()Uppdaterar bildcachen för smarta objektlager med det ändrade innehållet.
WriteArgb32ScanLine(int, int[])Skriver hela skanningslinjen till det angivna skanningslinjeindexet.
WriteScanLine(int, Color[])Skriver hela skanningslinjen till det angivna skanningslinjeindexet.

Exempel

Följande kod visar stödet för Embedded Smart-objekt.

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

// Det här exemplet visar hur man ändrar det smarta objektlagret i PSD-filen och exporterar / uppdaterar det ursprungliga inbäddade innehållet för smarta objekt.
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);

        // Låt oss exportera den inbäddade smarta objektbilden från PSD-smarta objektlagret
        smartObjectLayer.ExportContents(exportPath);

        // Låt oss kontrollera om originalbilden är korrekt sparad
        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);

            // Låt oss invertera den ursprungliga smarta objektbilden
            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);

            // Låt oss ersätta den inbäddade smarta objektbilden i PSD-lagret
            smartObjectLayer.ReplaceContents(innerImage);
        }

        // Låt oss kontrollera om den uppdaterade bilden sparas korrekt
        image.Save(psd2OutputPath, new PsdOptions(image));
        image.Save(png2OutputPath, new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
    }
}

Se även