Class SmartObjectLayer

SmartObjectLayer class

Menentukan kelas SmartObjectLayer yang berisi tertanam dalam file PSD atau objek pintar yang ditautkan di file eksternal. Dengan Smart Objects, Anda dapat: Melakukan transformasi tak rusak. Anda dapat menskalakan, memutar, memiringkan, mendistorsi, mengubah perspektif, atau melengkungkan lapisan tanpa kehilangan data atau kualitas gambar asli karena transformasi tidak memengaruhi data asli. Bekerja dengan data vektor, seperti karya seni vektor dari Illustrator, yang sebaliknya akan di-raster. Melakukan pemfilteran tak rusak. Anda dapat mengedit filter yang diterapkan ke Smart Objects kapan saja. Edit satu Smart Object dan perbarui semua instance tertautnya secara otomatis. Terapkan layer mask yang tertaut atau tidak tertaut ke layer Smart Object. Coba berbagai desain dengan desain rendah resolusi gambar placeholder yang nantinya Anda ganti dengan versi final. Dalam Adobe� Photoshop�, Anda dapat menyematkan konten gambar ke dalam dokumen PSD. Informasi selengkapnya ada di sini:https://helpx.adobe.com/photoshop/using/create-smart-objects.html Sebuah lapisan dengan objek pintar yang disematkan berisi sumber daya yang ditempatkan (PlLd) dan SoLd dengan properti objek pintar. Sumber daya PlLd dapat berdiri sendiri untuk versi PSD yang lebih lama dari 10. Sumber daya ini berisi UniqueId dari LiFdDataSource di Lnk2Resource global dengan yang disematkan filename dan parameter lainnya, termasuk konten file yang disematkan dalam format aslinya sebagai larik byte.

public class SmartObjectLayer : Layer

Properti

NamaKeterangan
AutoAdjustPalette { get; set; }Mendapat atau menetapkan nilai yang menunjukkan apakah palet penyesuaian otomatis.
virtual BackgroundColor { get; set; }Mendapat atau menetapkan nilai untuk warna latar belakang.
override BitsPerPixel { get; }Mendapat bit gambar per jumlah piksel.
BlendingOptions { get; }Mendapatkan opsi pencampuran.
virtual BlendModeKey { get; set; }Mendapat atau menyetel kunci mode campuran.
BlendModeSignature { get; }Mendapat tanda tangan mode campuran.
Bottom { get; set; }Mendapat atau mengatur posisi layer bawah.
Bounds { get; }Mendapat batas gambar.
BufferSizeHint { get; set; }Mendapat atau menyetel petunjuk ukuran buffer yang ditentukan ukuran maksimum yang diizinkan untuk semua buffer internal.
ChannelInformation { get; set; }Mendapat atau menyetel informasi saluran.
ChannelsCount { get; }Mendapatkan jumlah saluran lapisan.
Clipping { get; set; }Mendapat atau menyetel kliping layer. 0 = alas, 1 = bukan alas.
Container { get; }MendapatkanImage wadah.
Contents { get; set; }Mendapat atau menyetel konten lapisan objek pintar. Konten objek pintar yang disematkan adalah file gambar mentah yang disematkan:Data dan propertinya. Konten smart object tertaut adalah konten mentah dari file gambar tertaut jika tersedia dan propertinya:LiFeDataSource . Kami tidak mendukung pemuatan dari Adobe� Photoshop� �� Graphics Library saatIsLibraryLink benar. Untuk file tautan biasa, pertama-tama, kami menggunakanRelativePath untuk mencari file relative ke jalur gambar sumberSourceImagePath , jika tidak tersedia kita lihatFullPath , jika tidak, maka kami mencari file tautan di direktori yang sama tempat gambar kami berada:SourceImagePath .
ContentsBounds { get; set; }Mendapat atau menyetel batas konten smart object.
ContentsSource { get; set; }Mendapat atau menyetel sumber konten smart object.
ContentType { get; }Mendapat jenis konten lapisan objek pintar. Konten objek pintar yang disematkan adalah file gambar mentah yang disematkan:Data . Konten objek cerdas tertaut adalah konten mentah dari file gambar tertaut jika tersedia:LiFeDataSource . Kami tidak mendukung pemuatan dari Adobe� Photoshop� �� Graphics Library saatIsLibraryLink benar. Untuk file tautan biasa, pertama-tama, kami menggunakanRelativePath untuk mencari file relative ke jalur gambar sumberSourceImagePath , jika tidak tersedia kita lihatFullPath , jika tidak, maka kami mencari file tautan di direktori yang sama tempat gambar kami berada:SourceImagePath .
DataStreamContainer { get; }Mendapat aliran data objek.
DisplayName { get; set; }Mendapat atau menyetel nama tampilan layer.
Disposed { get; }Mendapat nilai yang menunjukkan apakah instance ini dibuang.
ExtraLength { get; }Mendapat panjang informasi tambahan lapisan dalam byte.
virtual FileFormat { get; }Mendapat nilai format file
Filler { get; set; }Mendapat atau menyetel pengisi lapisan.
FillOpacity { get; set; }Mendapat atau menyetel opasitas isian.
Flags { get; set; }Mendapat atau menyetel flag layer. bit 0 = transparansi dilindungi; bit 1 = terlihat; bit 2 = usang; bit 3 = 1 untuk Photoshop 5.0 dan yang lebih baru, beri tahu jika bit 4 memiliki informasi yang berguna; bit 4 = data piksel tidak relevan dengan tampilan dokumen.
override HasAlpha { get; }Mendapat nilai yang menunjukkan apakah instance ini memiliki alpha.
virtual HasBackgroundColor { get; set; }Mendapat atau menetapkan nilai yang menunjukkan apakah gambar memiliki warna latar belakang.
virtual HasTransparentColor { get; set; }Mendapat nilai yang menunjukkan apakah gambar berwarna transparan.
override Height { get; }Mendapatkan tinggi gambar.
virtual HorizontalResolution { get; set; }Mendapat atau menyetel resolusi horizontal, dalam piksel per inci, dari iniRasterImage .
virtual ImageOpacity { get; }Mendapat opacity dari gambar ini.
InterruptMonitor { get; set; }Mendapat atau menyetel monitor interupsi.
override IsCached { get; }Mendapat nilai yang menunjukkan apakah data gambar di-cache saat ini.
IsRawDataAvailable { get; }Mendapat nilai yang menunjukkan apakah pemuatan data mentah tersedia.
IsVisible { get; set; }Mendapat atau menyetel nilai yang menunjukkan apakah layer terlihat
virtual IsVisibleInGroup { get; }Mendapat nilai yang menunjukkan apakah instance ini terlihat dalam grup (Jika lapisan tidak ada dalam grup, berarti grup root).
LayerBlendingRangesData { get; set; }Mendapat atau menyetel data rentang campuran lapisan.
LayerCreationDateTime { get; set; }Mendapat atau menyetel waktu tanggal pembuatan layer.
LayerLock { get; set; }Mendapat atau menyetel kunci lapisan. Perhatikan bahwa jika bendera LayerFlags.TransparencyProtected disetel maka akan ditimpa oleh bendera kunci lapisan. Untuk mengembalikan LayerFlags.TransparencyProtected bendera perlu diterapkan untuk opsi lapisan layer.Flags |= LayerFlags.TransparencyProtected
LayerMaskData { get; set; }Mendapat atau menyetel data layer mask.
LayerOptions { get; }Mendapat opsi lapisan.
Left { get; set; }Mendapat atau mengatur posisi layer kiri.
Length { get; }Mendapat panjang lapisan keseluruhan dalam byte.
Name { get; set; }Mendapat atau menetapkan nama layer.
Opacity { get; set; }Mendapat atau menyetel opacity layer. 0 = transparan, 255 = buram.
Palette { get; set; }Mendapat atau menyetel palet warna. Palet warna tidak digunakan saat piksel direpresentasikan secara langsung.
virtual PremultiplyComponents { get; set; }Mendapat atau menetapkan nilai yang menunjukkan apakah komponen gambar harus dikalikan sebelumnya.
RawCustomColorConverter { get; set; }Mendapat atau menyetel konverter warna khusus
virtual RawDataFormat { get; }Mendapatkan format data mentah.
RawDataSettings { get; }Mendapat pengaturan data mentah saat ini. Perhatikan saat menggunakan setelan ini, data dimuat tanpa konversi.
RawFallbackIndex { get; set; }Mendapat atau menyetel indeks fallback untuk digunakan saat indeks palet di luar batas
RawIndexedColorConverter { get; set; }Mendapat atau mengatur konverter warna yang diindeks
virtual RawLineSize { get; }Mendapat ukuran garis mentah dalam byte.
Resources { get; set; }Mendapat atau menyetel sumber daya lapisan.
Right { get; set; }Mendapat atau mengatur posisi layer yang tepat.
SheetColorHighlight { get; set; }Mendapat atau menyetel sorotan warna lembar dekoratif di daftar lapisan
Size { get; }Mendapatkan ukuran gambar.
SmartFilters { get; }Mendapat filter pintar.
SmartObjectProvider { get; }Mendapatkan penyedia objek pintar.
Top { get; set; }Mendapat atau mengatur posisi layer atas.
virtual TransparentColor { get; set; }Mendapat warna transparan gambar.
virtual UpdateXmpData { get; set; }Mendapat atau menetapkan nilai yang menunjukkan apakah akan memperbarui metadata XMP.
virtual UseRawData { get; set; }Mendapat atau menetapkan nilai yang menunjukkan apakah akan menggunakan pemuatan data mentah saat pemuatan data mentah tersedia.
virtual VerticalResolution { get; set; }Mendapat atau menyetel resolusi vertikal, dalam piksel per inci, dari iniRasterImage .
override Width { get; }Mendapatkan lebar gambar.
virtual XmpData { get; set; }Mendapat atau menyetel metadata XMP.

Metode

NamaKeterangan
AddLayerMask(LayerMaskData)Menambahkan topeng ke lapisan saat ini.
override AdjustBrightness(int)Menyesuaikan kecerahan untuk gambar.
override AdjustContrast(float)Kontras gambar
override AdjustGamma(float)Gamma-koreksi gambar.
override AdjustGamma(float, float, float)Gamma-koreksi gambar.
override BinarizeBradley(double)Binarisasi gambar menggunakan algoritme ambang batas adaptif Bradley menggunakan ambang batas gambar integral
override BinarizeBradley(double, int)Binarisasi gambar menggunakan algoritme ambang batas adaptif Bradley menggunakan ambang batas gambar integral
override BinarizeFixed(byte)Binarisasi gambar dengan ambang yang ditentukan sebelumnya
override BinarizeOtsu()Binarisasi gambar dengan thresholding Otsu
override CacheData()Meng-cache data dan memastikan tidak ada pemuatan data tambahan yang dilakukan dari dasarnyaDataStreamContainer .
CanSave(ImageOptionsBase)Menentukan apakah gambar dapat disimpan ke format file tertentu yang diwakili oleh opsi penyimpanan yang diteruskan.
ConvertToLinked(string)Mengonversi objek pintar tersemat ini menjadi objek pintar tertaut.
override Crop(Rectangle)Memotong gambar.
virtual Crop(int, int, int, int)Pangkas gambar dengan shift.
Dispose()Membuang instance saat ini.
Dither(DitheringMethod, int)Melakukan dithering pada gambar saat ini.
override Dither(DitheringMethod, int, IColorPalette)Melakukan dithering pada gambar saat ini.
DrawImage(Point, RasterImage)Menggambar gambar pada layer.
DuplicateLayer()Membuat lapisan objek pintar baru dengan menyalin yang ini. Perhatikan bahwa untuk objek pintar yang disematkan, gambar yang disematkan dibagikan. Jika Anda ingin menyalin penggunaan gambar yang disematkanNewSmartObjectViaCopy metode.
EmbedLinked()Menyematkan objek pintar yang ditautkan di lapisan ini.
ExportContents(string)Mengekspor konten yang disematkan atau ditautkan ke file.
virtual Filter(Rectangle, FilterOptionsBase)Memfilter persegi panjang yang ditentukan.
GetArgb32Pixel(int, int)Mendapat gambar piksel ARGB 32-bit.
GetDefaultArgb32Pixels(Rectangle)Mendapatkan susunan piksel ARGB 32-bit default.
virtual GetDefaultOptions(object[])Mendapat opsi default.
GetDefaultPixels(Rectangle, IPartialArgb32PixelLoader)Mendapatkan larik piksel default menggunakan pemuat piksel parsial.
GetDefaultRawData(Rectangle, RawDataSettings)Mendapat larik data mentah default.
GetDefaultRawData(Rectangle, IPartialRawDataLoader, RawDataSettings)Mendapatkan larik data mentah default menggunakan pemuat piksel parsial.
override GetHashCode()Mengembalikan kode hash untuk instance ini.
virtual GetModifyDate(bool)Mendapatkan tanggal dan waktu gambar sumber daya terakhir diubah.
virtual GetOriginalOptions()Mendapatkan opsi berdasarkan pengaturan file asli. Hal ini berguna untuk menjaga kedalaman bit dan parameter lain dari gambar asli tidak berubah. Misalnya, jika kita memuat gambar PNG hitam-putih dengan 1 bit per piksel lalu simpan menggunakan the Save , gambar PNG keluaran dengan 8-bit per piksel akan dihasilkan. Untuk menghindarinya dan menyimpan gambar PNG dengan 1-bit per piksel, gunakan metode ini untuk mendapatkan opsi penyimpanan yang sesuai dan meneruskannya keSavemetode sebagai parameter kedua.
GetPixel(int, int)Mendapat piksel gambar.
GetSkewAngle()Mendapatkan sudut kemiringan. Metode ini berlaku untuk dokumen teks yang dipindai, untuk menentukan sudut kemiringan saat memindai.
override Grayscale()Transformasi gambar ke representasi skala abu-abunya
LoadArgb32Pixels(Rectangle)Memuat piksel ARGB 32-bit.
LoadArgb64Pixels(Rectangle)Memuat piksel ARGB 64-bit.
LoadCmyk32Pixels(Rectangle)Memuat piksel dalam format CMYK.
LoadContents(LoadOptions)Mendapat konten gambar tersemat atau tertaut dari lapisan objek pintar.
LoadPartialArgb32Pixels(Rectangle, IPartialArgb32PixelLoader)Memuat piksel ARGB 32-bit sebagian per paket.
LoadPartialPixels(Rectangle, IPartialPixelLoader)Memuat piksel sebagian per paket.
LoadPixels(Rectangle)Memuat piksel.
LoadRawData(Rectangle, RawDataSettings, IPartialRawDataLoader)Memuat data mentah.
LoadRawData(Rectangle, Rectangle, RawDataSettings, IPartialRawDataLoader)Memuat data mentah.
virtual MergeLayerTo(Layer)Menggabungkan layer ke layer yang ditentukan
NewSmartObjectViaCopy()Membuat lapisan objek pintar baru dengan mengatasi yang ini. Mereproduksi Lapisan -> Objek Cerdas -> Objek Cerdas Baru melalui fungsi Salin dari Adobe� Photoshop�. Perhatikan bahwa ini diaktifkan hanya untuk objek pintar tersemat karena gambar disematkan juga disalin. Jika Anda ingin berbagi penggunaan gambar yang disematkanDuplicateLayer metode.
NormalizeAngle()Menormalkan sudut. Metode ini berlaku untuk dokumen teks yang dipindai untuk menghilangkan pindaian miring. Metode ini menggunakanGetSkewAngle DanRotate metode.
virtual NormalizeAngle(bool, Color)Menormalkan sudut. Metode ini berlaku untuk dokumen teks yang dipindai untuk menghilangkan pindaian miring. Metode ini menggunakanGetSkewAngle DanRotate metode.
ReadArgb32ScanLine(int)Membaca seluruh baris pindai dengan indeks baris pindai yang ditentukan.
ReadScanLine(int)Membaca seluruh baris pindai dengan indeks baris pindai yang ditentukan.
RelinkToFile(string)Menautkan kembali smart object tertaut ke file baru. Tidak perlu memanggil metode UpdateModifiedContent sesudahnya.
ReplaceColor(Color, byte, Color)Mengganti satu warna ke warna lain dengan perbedaan yang diperbolehkan dan mempertahankan nilai alfa asli untuk menyimpan tepi yang halus.
virtual ReplaceColor(int, byte, int)Mengganti satu warna ke warna lain dengan perbedaan yang diperbolehkan dan mempertahankan nilai alfa asli untuk menyimpan tepi yang halus.
ReplaceContents(Image)Mengganti konten smart object yang disematkan di lapisan smart object.
ReplaceContents(string)Mengganti konten dengan file. Tidak perlu memanggil metode UpdateModifiedContent sesudahnya.
ReplaceContents(Image, ResolutionSetting)Mengganti konten smart object yang disematkan di lapisan smart object.
ReplaceContents(string, ResolutionSetting)Mengganti konten dengan file. Tidak perlu memanggil metode UpdateModifiedContent sesudahnya.
ReplaceNonTransparentColors(Color)Mengganti semua warna non-transparan dengan warna baru dan mempertahankan nilai alfa asli untuk mempertahankan tepi yang halus. Catatan: jika Anda menggunakannya pada gambar tanpa transparansi, semua warna akan diganti dengan satu warna.
virtual ReplaceNonTransparentColors(int)Mengganti semua warna non-transparan dengan warna baru dan mempertahankan nilai alfa asli untuk mempertahankan tepi yang halus. Catatan: jika Anda menggunakannya pada gambar tanpa transparansi, semua warna akan diganti dengan satu warna.
Resize(int, int)Mengubah ukuran gambar. DefaultLeftTopToLeftTopdigunakan.
override Resize(int, int, ImageResizeSettings)Mengubah ukuran gambar.
override Resize(int, int, ResizeType)Mengubah ukuran gambar.
ResizeHeightProportionally(int)Mengubah ukuran tinggi secara proporsional.
virtual ResizeHeightProportionally(int, ImageResizeSettings)Mengubah ukuran tinggi secara proporsional.
virtual ResizeHeightProportionally(int, ResizeType)Mengubah ukuran tinggi secara proporsional.
ResizeWidthProportionally(int)Mengubah ukuran lebar secara proporsional.
virtual ResizeWidthProportionally(int, ImageResizeSettings)Mengubah ukuran lebar secara proporsional.
virtual ResizeWidthProportionally(int, ResizeType)Mengubah ukuran lebar secara proporsional.
virtual Rotate(float)Putar gambar di tengah.
override Rotate(float, bool, Color)Putar gambar di tengah.
override RotateFlip(RotateFlipType)Memutar, membalik, atau memutar dan membalik gambar.
Save()Menyimpan data gambar ke aliran yang mendasarinya.
override Save(Stream)Menyimpan data objek ke aliran yang ditentukan.
Save(string)Menyimpan data objek ke lokasi file yang ditentukan.
Save(Stream, ImageOptionsBase)Menyimpan data gambar ke aliran yang ditentukan dalam format file yang ditentukan sesuai dengan opsi penyimpanan.
override Save(string, bool)Menyimpan data objek ke lokasi file yang ditentukan.
override Save(string, ImageOptionsBase)Menyimpan data objek ke lokasi file yang ditentukan dalam format file yang ditentukan sesuai dengan opsi penyimpanan.
override Save(Stream, ImageOptionsBase, Rectangle)Menyimpan data gambar ke aliran yang ditentukan dalam format file yang ditentukan sesuai dengan opsi penyimpanan.
override Save(string, ImageOptionsBase, Rectangle)Menyimpan data objek ke lokasi file yang ditentukan dalam format file yang ditentukan sesuai dengan opsi penyimpanan.
SaveArgb32Pixels(Rectangle, int[])Menyimpan piksel ARGB 32-bit.
SaveCmyk32Pixels(Rectangle, int[])Menyimpan piksel.
SavePixels(Rectangle, Color[])Menyimpan piksel.
SaveRawData(byte[], int, Rectangle, RawDataSettings)Menyimpan data mentah.
SetArgb32Pixel(int, int, int)Mengatur piksel ARGB gambar 32-bit untuk posisi yang ditentukan.
override SetPalette(IColorPalette, bool)Mengatur palet gambar.
SetPixel(int, int, Color)Mengatur piksel gambar untuk posisi yang ditentukan.
virtual SetResolution(double, double)Menetapkan resolusi untuk iniRasterImage .
ShallowCopy()Membuat salinan dangkal dari Layer saat ini. Silakanhttps://msdn.microsoft.com/ru-ru/library/system.object.memberwiseclone(v=vs.110).aspx untuk penjelasan.
virtual ToBitmap()Mengubah gambar raster menjadi bitmap.
UpdateModifiedContent()Memperbarui cache gambar lapisan objek pintar dengan konten yang dimodifikasi.
WriteArgb32ScanLine(int, int[])Menulis seluruh baris pindai ke indeks baris pindai yang ditentukan.
WriteScanLine(int, Color[])Menulis seluruh baris pindai ke indeks baris pindai yang ditentukan.

Contoh

Kode berikut menunjukkan dukungan objek Cerdas Tertanam.

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

// Contoh ini menunjukkan cara mengubah lapisan objek pintar di file PSD dan mengekspor/memperbarui konten tersemat asli objek pintar.
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);

        // Mari ekspor gambar objek pintar tersemat dari lapisan objek pintar PSD
        smartObjectLayer.ExportContents(exportPath);

        // Mari kita periksa apakah gambar aslinya disimpan dengan benar
        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);

            // Mari kita membalikkan gambar smart object asli
            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);

            // Mari kita ganti gambar objek pintar tersemat di lapisan PSD
            smartObjectLayer.ReplaceContents(innerImage);
        }

        // Mari kita periksa apakah gambar yang diperbarui disimpan dengan benar
        image.Save(psd2OutputPath, new PsdOptions(image));
        image.Save(png2OutputPath, new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
    }
}

Lihat juga