Class SoLdResource

SoLdResource class

Bir PSD dosyasındaki akıllı nesne katmanı hakkında bilgi içeren SoLdResource sınıfını tanımlar. Adobe® Photoshop® görüntülerinde akıllı nesne katmanlarını desteklemek için kullanılır.

public class SoLdResource : SmartObjectResource

yapıcılar

İsimTanım
SoLdResource()Yeni bir örneğini başlatır.SoLdResource class. Bu varsayılan yapıcı, tarafından kullanılmak üzere tasarlanmıştır.SoLdResourceLoader . KullanımSmartResourceCreator SoLdResource sınıfları oluşturmak için.
SoLdResource(Guid, bool, bool)Yeni bir örneğini başlatır.SoLdResource class. Hazır bir örnek elde etmek için Items özelliğini ayarlamak veya InitializeItems()‘i çağırmak gerekir. Bu yapıcı tarafından kullanılmak üzere tasarlanmıştır.SmartResourceCreator ve birim içi testler. KullanımSmartResourceCreator SoLdResource sınıfları oluşturmak için.

Özellikleri

İsimTanım
override AntiAliasPolicy { get; set; }PSD görüntüsündeki akıllı nesne katmanı verilerinin kenar yumuşatma politikasını alır veya ayarlar.
Bottom { get; set; }PSD görüntüsünde yerleştirilen katmanın alt konumunu alır veya ayarlar.
Bounds { get; set; }PSD dosyasında yerleştirilen katmanın sınırlarını alır veya ayarlar.
Comp { get; set; }PSD dosyasındaki akıllı nesne katmanı verilerinin comp değerini alır veya ayarlar. Akıllı Nesnelerde katman kompozisyonları
CompId { get; set; }Alt belge için seçili olan kompozisyonun kimliğini alır veya ayarlar; hiçbiri seçilmezse -1 olur. Kompozisyonlar, tasarımcıların oluşturabileceği bir sayfa düzeninin kompozisyonlarıdır. Katman kompozisyonlarını kullanarak, tek bir Adobe® Photoshop® dosyasında bir mizanpajın birden çok sürümünü oluşturabilir, yönetebilir ve görüntüleyebilirsiniz. Katman kompozisyonu, Katmanlar panelinin bir durumunun anlık görüntüsüdür. Katman kompozisyonları, üç tip katman seçeneğini kaydeder but bu özellik, PSD dosyasındaki akıllı nesne katmanı için Katman Kompozisyonu seçim tanımlayıcısını alır. Akıllı Nesnelerde katman kompozisyonları
Crop { get; set; }PSD görüntüsündeki akıllı nesne katmanı verilerinin kırpılmasını alır veya ayarlar.
DurationDenominator { get; set; }Süre paydasını alır veya ayarlar.
DurationNumerator { get; set; }Süre payını alır veya ayarlar.
FrameCount { get; set; }PSD dosyasındaki akıllı nesne katmanı verilerinin çerçeve sayısını alır veya ayarlar.
FrameStepDenominator { get; set; }Çerçeve adım paydasını alır veya ayarlar.
FrameStepNumerator { get; set; }Çerçeve adımı payını alır veya ayarlar.
Height { get; set; }Yüksekliği alır veya ayarlar.
HorizontalMeshPoints { get; set; }PSD dosyasındaki yerleştirilmiş katmanın yatay ağ noktalarını alır veya ayarlar.
HorizontalMeshPointUnit { get; set; }Yatay ağ noktalarının ölçü birimini alır veya ayarlar.
IsCustom { get; set; }Bu örnek çarpıtma stilinin özel olup olmadığını gösteren bir değer alır veya ayarlar. Doğruysa, ağ noktaları içerir. false değerine ayarlanırsa ağ noktalarını siler.
override Items { get; set; }PSD dosyasındaki akıllı nesne katmanı verilerinin tanımlayıcı öğelerini alır veya ayarlar.
override Key { get; }SoLd akıllı nesne katmanı kaynak anahtarını alır.
Left { get; set; }PSD dosyasında yerleştirilen katmanın sol konumunu alır veya ayarlar.
override Length { get; }Akıllı nesne kaynak uzunluğunu bayt cinsinden alır.
NonAffineTransformMatrix { get; set; }PSD dosyasındaki akıllı nesne katmanı verilerinin afin olmayan dönüşüm matrisini alır veya ayarlar.
OriginalCompId { get; }Alt belge için geçerli olarak seçili Comp’un orijinal kimliğini alır; hiçbiri seçilmezse -1 olur. Bu özellik, PSD dosyasındaki akıllı nesne katmanı için orijinal katman Comp seçim tanımlayıcısını alır. Akıllı Nesnelerde katman kompozisyonları
override PageNumber { get; set; }PSD dosyasındaki akıllı nesne katmanı verilerinin sayfa numarasını alır veya ayarlar.
Perspective { get; set; }PSD dosyasına yerleştirilen katmanın perspektif değerini alır veya ayarlar.
PerspectiveOther { get; set; }PSD dosyasına yerleştirilen katmanın perspektif diğer değerini alır veya ayarlar.
PlacedId { get; set; }PSD görüntüsündeki bu akıllı nesne katmanı verilerinin benzersiz tanımlayıcısını alır veya ayarlar.
override PlacedLayerType { get; set; }PSD dosyasındaki akıllı nesne katmanı verilerinin türünü alır veya ayarlar.
override PsdVersion { get; }Akıllı nesne kaynağı için gereken minimum psd sürümünü alır. 0 kısıtlama olmadığını gösterir.
Resolution { get; set; }PSD dosyasındaki akıllı nesne katmanı verilerinin çözünürlüğünü alır veya ayarlar.
ResolutionUnit { get; set; }PSD dosyasındaki akıllı nesne katmanı verilerinin çözünürlük ölçüm birimini alır veya ayarlar.
Right { get; set; }PSD dosyasında yerleştirilen katmanın doğru konumunu alır veya ayarlar.
override Signature { get; }Akıllı nesne kaynak imzasını alır.
Top { get; set; }PSD görüntüsünde yerleştirilen katmanın en üst konumunu alır veya ayarlar.
override TotalPages { get; set; }PSD dosyasındaki akıllı nesne katmanı verilerinin toplam sayfa sayısını alır veya ayarlar.
override TransformMatrix { get; set; }PSD dosyasındaki akıllı nesne katmanı verilerinin dönüşüm matrisini alır veya ayarlar.
override UniqueId { get; set; }Akıllı nesne katmanı verilerinin genel benzersiz tanımlayıcısını alır veya ayarlarSmartObjectResource PSD görüntüsünde.
UOrder { get; set; }PSD dosyasındaki yerleştirilen katmanın U sıra değerini alır veya ayarlar.
Value { get; set; }PSD görüntüsündeki yerleştirilmiş katmanın çözgü değerini alır veya ayarlar.
Version { get; }PSD dosyasına yerleştirilen katmanın sürümünü alır, genellikle 3.
VerticalMeshPoints { get; set; }PSD dosyasındaki yerleştirilmiş katmanın yatay ağ noktalarını alır veya ayarlar.
VerticalMeshPointUnit { get; set; }Dikey ağ noktalarının ölçü birimini alır veya ayarlar.
VOrder { get; set; }PSD dosyasındaki yerleştirilmiş katmanın V sıra değerini alır veya ayarlar.
Width { get; set; }Genişliği alır veya ayarlar.

yöntemler

İsimTanım
override Save(StreamContainer, int)Akıllı nesne kaynağını belirtilen akış kapsayıcısına kaydeder.
override ToString()a döndürürString bu örneği temsil eder.

Alanlar

İsimTanım
const TypeToolKeyTip aracı bilgi anahtarı: ‘SoLd’.

Örnekler

Aşağıdaki kod, SoLdResource kaynağının desteğini gösterir.

[C#]

// Bu örnek, PSD dosyasının akıllı nesne katmanı veri özelliklerinin nasıl alınacağını veya ayarlanacağını gösterir.

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

                // Bu değerler PlLdResource'da (belirtilen UniqueId ile) de değiştirilmelidir.
                // ve bazılarının LinkDataSource'daki altı çizili akıllı nesneyle uyumlu olması gerekir
                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
                };

                // Bu unique ID varsa referanslarda değiştirilmelidir.
                resource.PlacedId = new Guid("12345678-9abc-def0-9876-54321fecba98");

                // Bazı parametrelere dikkat edin: görüntü Adobe® Photoshop® tarafından okunamaz hale gelebilir
                ////kaynak.UOrder = 6;
                ////kaynak.VOrder = 9;

                // Bunu değiştirmeyin, aksi takdirde serbest dönüşümü kullanamazsınız
                // veya altı çizili akıllı nesneyi vektör türüne değiştirin
                ////resource.PlacedLayerType = PlacedLayerType.Vector;

                // Bu benzersiz kimliğe sahip geçerli bir PlLdResource olmalıdır
                ////resource.UniqueId = new Guid("98765432-10fe-cba0-1234-56789abcdef0");

                break;
            }
        }
    }

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

Ayrıca bakınız