Class SoLdResource

SoLdResource class

Menentukan kelas SoLdResource yang berisi informasi tentang lapisan objek cerdas dalam file PSD. Digunakan untuk mendukung lapisan objek cerdas dalam gambar Adobe® Photoshop®.

public class SoLdResource : SmartObjectResource

Konstruktor

NamaKeterangan
SoLdResource()Menginisialisasi instance baru dariSoLdResource class. Konstruktor default ini dirancang untuk digunakan olehSoLdResourceLoader . GunakanSmartResourceCreator untuk membuat kelas SoLdResource.
SoLdResource(Guid, bool, bool)Menginisialisasi instance baru dariSoLdResource class. Diperlukan untuk menyetel properti Items atau memanggil InitializeItems() untuk mendapatkan instance yang siap pakai. Konstruktor ini dirancang untuk digunakan olehSmartResourceCreator dan dalam pengujian unit. GunakanSmartResourceCreator untuk membuat kelas SoLdResource.

Properti

NamaKeterangan
override AntiAliasPolicy { get; set; }Mendapat atau menyetel kebijakan anti alias dari data lapisan objek pintar di gambar PSD.
Bottom { get; set; }Mendapat atau menyetel lokasi bawah dari lapisan yang ditempatkan di gambar PSD.
Bounds { get; set; }Mendapat atau menyetel batas lapisan yang ditempatkan di file PSD.
Comp { get; set; }Mendapat atau menyetel nilai comp dari data lapisan objek pintar di file PSD. Lapisan comps di Smart Objects
CompId { get; set; }Mendapat atau menetapkan ID comp yang dipilih saat ini untuk dokumen anak, yang akan menjadi -1 jika tidak ada yang dipilih. Comp adalah komposisi tata letak halaman yang dapat dibuat oleh desainer. Menggunakan komposisi lapisan, Anda dapat membuat, mengelola, dan melihat beberapa versi tata letak dalam satu file Adobe® Photoshop®. Layer comp adalah snapshot dari status panel Layers. Layer comps menyimpan tiga jenis opsi layer but properti ini mendapatkan pengidentifikasi pemilihan Layer Comp untuk layer smart object di file PSD. Lapisan comps di Smart Objects
Crop { get; set; }Mendapat atau menyetel potongan data lapisan objek pintar di gambar PSD.
DurationDenominator { get; set; }Mendapatkan atau menyetel penyebut durasi.
DurationNumerator { get; set; }Mendapat atau menyetel pembilang durasi.
FrameCount { get; set; }Mendapat atau menyetel jumlah bingkai dari data lapisan objek pintar di file PSD.
FrameStepDenominator { get; set; }Mendapat atau menyetel penyebut langkah bingkai.
FrameStepNumerator { get; set; }Mendapat atau menyetel pembilang langkah bingkai.
Height { get; set; }Mendapat atau mengatur ketinggian.
HorizontalMeshPoints { get; set; }Mendapat atau menyetel titik jaring horizontal dari lapisan yang ditempatkan di file PSD.
HorizontalMeshPointUnit { get; set; }Mendapat atau menetapkan satuan ukuran dari titik jaring horizontal.
IsCustom { get; set; }Mendapat atau menetapkan nilai yang menunjukkan apakah gaya warp instance ini adalah custom. Jika true, gaya ini berisi poin mesh. Jika disetel ke false, itu akan menghapus poin mesh.
override Items { get; set; }Mendapat atau menyetel item deskriptor dari data lapisan objek pintar di file PSD.
override Key { get; }Mendapat kunci sumber daya lapisan objek pintar SOLd.
Left { get; set; }Mendapat atau menyetel lokasi kiri dari lapisan yang ditempatkan di file PSD.
override Length { get; }Mendapatkan panjang sumber daya smart object dalam byte.
NonAffineTransformMatrix { get; set; }Mendapat atau menyetel matriks transformasi non affine dari data lapisan objek cerdas dalam file PSD.
OriginalCompId { get; }Mendapat ID asli dari Comp yang saat ini dipilih untuk dokumen anak, yang akan menjadi -1 jika tidak ada yang dipilih. Properti ini mendapatkan pengidentifikasi pilihan Comp layer asli untuk layer smart object di file PSD. Lapisan comps di Smart Objects
override PageNumber { get; set; }Mendapat atau menyetel nomor halaman data lapisan objek pintar di file PSD.
Perspective { get; set; }Mendapat atau menyetel nilai perspektif dari lapisan yang ditempatkan di file PSD.
PerspectiveOther { get; set; }Mendapat atau menyetel nilai perspektif lain dari lapisan yang ditempatkan di file PSD.
PlacedId { get; set; }Mendapat atau menyetel pengidentifikasi unik dari data lapisan objek pintar ini dalam gambar PSD.
override PlacedLayerType { get; set; }Mendapat atau menyetel jenis data lapisan objek pintar di file PSD.
override PsdVersion { get; }Mendapatkan versi psd minimal yang diperlukan untuk sumber daya smart object. 0 menunjukkan tidak ada batasan.
Resolution { get; set; }Mendapat atau menyetel resolusi data lapisan objek pintar dalam file PSD.
ResolutionUnit { get; set; }Mendapat atau menyetel satuan ukuran resolusi dari data lapisan objek pintar dalam file PSD.
Right { get; set; }Mendapatkan atau menyetel lokasi yang tepat dari lapisan yang ditempatkan di file PSD.
override Signature { get; }Mendapat tanda tangan sumber daya smart object.
Top { get; set; }Mendapat atau menyetel lokasi teratas dari lapisan yang ditempatkan di gambar PSD.
override TotalPages { get; set; }Mendapat atau menetapkan jumlah halaman total data lapisan objek pintar dalam file PSD.
override TransformMatrix { get; set; }Mendapat atau menyetel matriks transformasi dari data lapisan objek pintar dalam file PSD.
override UniqueId { get; set; }Mendapat atau menyetel pengidentifikasi unik global dari data lapisan objek pintarSmartObjectResource dalam gambar PSD.
UOrder { get; set; }Mendapat atau menyetel nilai urutan U dari lapisan yang ditempatkan di file PSD.
Value { get; set; }Mendapat atau menyetel nilai warp dari lapisan yang ditempatkan di gambar PSD.
Version { get; }Mendapat versi lapisan yang ditempatkan di file PSD, biasanya 3.
VerticalMeshPoints { get; set; }Mendapat atau menyetel titik jaring horizontal dari lapisan yang ditempatkan di file PSD.
VerticalMeshPointUnit { get; set; }Mendapat atau menetapkan satuan ukuran dari titik jaring vertikal.
VOrder { get; set; }Mendapat atau menyetel nilai urutan V dari lapisan yang ditempatkan di file PSD.
Width { get; set; }Mendapat atau mengatur lebar.

Metode

NamaKeterangan
override Save(StreamContainer, int)Menyimpan sumber daya smart object ke wadah aliran yang ditentukan.
override ToString()Mengembalikan aString yang mewakili instance ini.

Bidang

NamaKeterangan
const TypeToolKeyKunci info alat jenis: ‘SoLd’.

Contoh

Kode berikut menunjukkan dukungan sumber daya SoLdResource.

[C#]

// Contoh ini menunjukkan cara mendapatkan atau menyetel properti data lapisan objek pintar dari file PSD.

void AssertAreEqual(object actual, object expected)
{
    var areEqual = object.Equals(actual, expected);
    if (!areEqual && actual is Array && expected is Array)
    {
        var actualArray = (Array)actual;
        var expectedArray = (Array)actual;
        if (actualArray.Length == expectedArray.Length)
        {
            for (int i = 0; i < actualArray.Length; i++)
            {
                if (!object.Equals(actualArray.GetValue(i), expectedArray.GetValue(i)))
                {
                    break;
                }
            }

            areEqual = true;
        }
    }

    if (!areEqual)
    {
        throw new FormatException(
            string.Format("Actual value {0} are not equal to expected {1}.", actual, expected));
    }
}

var sourceFilePath = "LayeredSmartObjects8bit2.psd";
var outputFilePath = "LayeredSmartObjects8bit2_output.psd";
var expectedValues = new object[]
{
    new object[]
    {
        true,
        "76f05a3b-7523-5e42-a1bb-27f4735bffa0",
        1,
        1,
        0x10,
        PlacedLayerType.Raster,
        new double[8]
        {
            29.937922786050663,
            95.419959734187131,
            126.85445817782261,
            1.0540625423957124,
            172.20861031651307,
            47.634102808208553,
            75.292074924741144,
            142
        },
        0.0,
        0.0,
        0.0,
        0d,
        0d,
        149d,
        310d,
        4,
        4,
        1,
        0,
        600,
        0,
        600,
        1,
        310d,
        149d,
        72d,
        UnitTypes.Density,
        -1,
        -1,
        -1,
        "d3388655-19e4-9742-82f2-f553bb01046a",
        new double[8]
        {
            29.937922786050663,
            95.419959734187131,
            126.85445817782261,
            1.0540625423957124,
            172.20861031651307,
            47.634102808208553,
            75.292074924741144,
            142
        },
        UnitTypes.Pixels,
        new double[16]
        {
            0.0d, 103.33333333333333d, 206.66666666666666d, 310.0d,
            0.0d, 103.33333333333333d, 206.66666666666666d, 310.0d,
            0.0d, 103.33333333333333d, 206.66666666666666d, 310.0d,
            0.0d, 103.33333333333333d, 206.66666666666666d, 310.0d
        },
        UnitTypes.Pixels,
        new double[16]
        {
            0.0d, 0.0d, 0.0d, 0.0d,
            49.666666666666664d, 49.666666666666664d, 49.666666666666664d, 49.666666666666664d,
            99.333333333333329d, 99.333333333333329d, 99.333333333333329d, 99.333333333333329d,
            149, 149, 149, 149,
        },
    },
    new object[]
    {
        true,
        "cf0477a8-8f92-ac4f-9462-f78e26234851",
        1,
        1,
        0x10,
        PlacedLayerType.Raster,
        new double[8]
        {
            37.900314592235681,
            -0.32118219433001371,
            185.94210608826535,
            57.7076819802063,
            153.32047433609358,
            140.9311755779743,
            5.2786828400639294,
            82.902311403437977,
        },
        0.0,
        0.0,
        0.0,
        0d,
        0d,
        721d,
        1280d,
        4,
        4,
        1,
        0,
        600,
        0,
        600,
        1,
        1280d,
        721d,
        72d,
        UnitTypes.Density,
        -1,
        -1,
        -1,
        "625cc4b9-2c5f-344f-8636-03caf2bd3489",
        new double[8]
        {
            37.900314592235681,
            -0.32118219433001371,
            185.94210608826535,
            57.7076819802063,
            153.32047433609358,
            140.9311755779743,
            5.2786828400639294,
            82.902311403437977,
        },
        UnitTypes.Pixels,
        new double[16]
        {
            0.0, 426.66666666666663, 853.33333333333326, 1280,
            0.0, 426.66666666666663, 853.33333333333326, 1280,
            0.0, 426.66666666666663, 853.33333333333326, 1280,
            0.0, 426.66666666666663, 853.33333333333326, 1280,
        },
        UnitTypes.Pixels,
        new double[16]
        {
            0.0, 0.0, 0.0, 0.0,
            240.33333333333331, 240.33333333333331, 240.33333333333331, 240.33333333333331,
            480.66666666666663, 480.66666666666663, 480.66666666666663, 480.66666666666663,
            721, 721, 721, 721,
        },
        0,
        0
    }
};

using (PsdImage image = (PsdImage)Image.Load(sourceFilePath))
{
    SoLdResource resource = null;
    int index = 0;
    foreach (Layer imageLayer in image.Layers)
    {
        foreach (var imageResource in imageLayer.Resources)
        {
            resource = imageResource as SoLdResource;
            if (resource != null)
            {
                var expectedValue = (object[])expectedValues[index++];
                AssertAreEqual(expectedValue[0], resource.IsCustom);
                AssertAreEqual(expectedValue[1], resource.UniqueId.ToString());
                AssertAreEqual(expectedValue[2], resource.PageNumber);
                AssertAreEqual(expectedValue[3], resource.TotalPages);
                AssertAreEqual(expectedValue[4], resource.AntiAliasPolicy);
                AssertAreEqual(expectedValue[5], resource.PlacedLayerType);
                AssertAreEqual(8, resource.TransformMatrix.Length);
                AssertAreEqual((double[])expectedValue[6], resource.TransformMatrix);
                AssertAreEqual(expectedValue[7], resource.Value);
                AssertAreEqual(expectedValue[8], resource.Perspective);
                AssertAreEqual(expectedValue[9], resource.PerspectiveOther);
                AssertAreEqual(expectedValue[10], resource.Top);
                AssertAreEqual(expectedValue[11], resource.Left);
                AssertAreEqual(expectedValue[12], resource.Bottom);
                AssertAreEqual(expectedValue[13], resource.Right);
                AssertAreEqual(expectedValue[14], resource.UOrder);
                AssertAreEqual(expectedValue[15], resource.VOrder);

                AssertAreEqual(expectedValue[16], resource.Crop);
                AssertAreEqual(expectedValue[17], resource.FrameStepNumerator);
                AssertAreEqual(expectedValue[18], resource.FrameStepDenominator);
                AssertAreEqual(expectedValue[19], resource.DurationNumerator);
                AssertAreEqual(expectedValue[20], resource.DurationDenominator);
                AssertAreEqual(expectedValue[21], resource.FrameCount);
                AssertAreEqual(expectedValue[22], resource.Width);
                AssertAreEqual(expectedValue[23], resource.Height);
                AssertAreEqual(expectedValue[24], resource.Resolution);
                AssertAreEqual(expectedValue[25], resource.ResolutionUnit);
                AssertAreEqual(expectedValue[26], resource.Comp);
                AssertAreEqual(expectedValue[27], resource.CompId);
                AssertAreEqual(expectedValue[28], resource.OriginalCompId);
                AssertAreEqual(expectedValue[29], resource.PlacedId.ToString());
                AssertAreEqual((IEnumerable)expectedValue[30], resource.NonAffineTransformMatrix);
                if (resource.IsCustom)
                {
                    AssertAreEqual(expectedValue[31], resource.HorizontalMeshPointUnit);
                    AssertAreEqual((double[])expectedValue[32], resource.HorizontalMeshPoints);
                    AssertAreEqual(expectedValue[33], resource.VerticalMeshPointUnit);
                    AssertAreEqual((double[])expectedValue[34], resource.VerticalMeshPoints);
                    var temp = resource.VerticalMeshPoints;
                    resource.VerticalMeshPoints = resource.HorizontalMeshPoints;
                    resource.HorizontalMeshPoints = temp;
                }

                // Nilai ini juga harus diubah di PlLdResource (dengan UniqueId yang ditentukan).
                // dan beberapa di antaranya harus sesuai dengan objek pintar yang digarisbawahi di LinkDataSource
                resource.PageNumber = 2;
                resource.TotalPages = 3;
                resource.AntiAliasPolicy = 0;
                resource.Value = 1.23456789;
                resource.Perspective = 0.123456789;
                resource.PerspectiveOther = 0.987654321;
                resource.Top = -126;
                resource.Left = -215;
                resource.Bottom = 248;
                resource.Right = 145;
                resource.Crop = 4;
                resource.FrameStepNumerator = 1;
                resource.FrameStepDenominator = 601;
                resource.DurationNumerator = 2;
                resource.DurationDenominator = 602;
                resource.FrameCount = 11;
                resource.Width = 541;
                resource.Height = 249;
                resource.Resolution = 144;
                resource.Comp = 21;
                resource.CompId = 22;
                resource.TransformMatrix = new double[8]
                {
                    12.937922786050663,
                    19.419959734187131,
                    2.85445817782261,
                    1.0540625423957124,
                    7.20861031651307,
                    14.634102808208553,
                    17.292074924741144,
                    4
                };
                resource.NonAffineTransformMatrix = new double[8]
                {
                    129.937922786050663,
                    195.419959734187131,
                    26.85445817782261,
                    12.0540625423957124,
                    72.20861031651307,
                    147.634102808208553,
                    175.292074924741144,
                    42
                };

                // Id unik ini harus diubah dalam referensi jika ada
                resource.PlacedId = new Guid("12345678-9abc-def0-9876-54321fecba98");

                // Hati-hati dengan beberapa parameter: gambar mungkin menjadi tidak terbaca oleh Adobe® Photoshop®
                ////resource.UOrder = 6;
                ////resource.VOrder = 9;

                // Jangan ubah ini jika tidak, Anda tidak akan dapat menggunakan transformasi bebas
                // atau ubah smart object yang digarisbawahi menjadi tipe vektor
                ////resource.PlacedLayerType = PlacedLayerType.Vector;

                // Harus ada PlLdResource yang valid dengan ID unik ini
                ////resource.UniqueId = new Guid("98765432-10fe-cba0-1234-56789abcdef0");

                break;
            }
        }
    }

    AssertAreEqual(true, resource != null);
    image.Save(outputFilePath, new PsdOptions(image));
}

Lihat juga