Lnk2Resource.Item
Lnk2Resource indexer
가져오기LiFdDataSource
지정된 index. 에서
public LiFdDataSource this[int index] { get; }
모수 | 설명 |
---|---|
index | 색인. |
반환 값
LiFdDataSource
인스턴스.
자산 가치
예
이 예제에서는 Lnk2Resource 및 Lnk3Resource의 속성을 가져오고 설정하는 방법을 보여줍니다.
[C#]
void AssertAreEqual(object expected, object actual)
{
if (!object.Equals(actual, expected))
{
throw new FormatException(string.Format("Actual value {0} are not equal to expected {1}.", actual, expected));
}
}
object[] Lnk2ResourceSupportCases = new object[]
{
new object[]
{
"00af34a0-a90b-674d-a821-73ee508c5479",
"rgb8_2x2.png",
"png",
string.Empty,
0x53,
0d,
string.Empty,
7,
true,
0x124L,
0x74cL
}
};
object[] LayeredLnk2ResourceSupportCases = new object[]
{
new object[]
{
"69ac1c0d-1b74-fd49-9c7e-34a7aa6299ef",
"huset.jpg",
"JPEG",
string.Empty,
0x9d46,
0d,
"xmp.did:0F94B342065B11E395B1FD506DED6B07",
7,
true,
0x9E60L,
0xc60cL
},
new object[]
{
"5a7d1965-0eae-b24e-a82f-98c7646424c2",
"panama-papers.jpg",
"JPEG",
string.Empty,
0xF56B,
0d,
"xmp.did:BDE940CBF51B11E59D759CDA690663E3",
7,
true,
0xF694L,
0x10dd4L
},
};
object[] LayeredLnk3ResourceSupportCases = new object[]
{
new object[]
{
"2fd7ba52-0221-de4c-bdc4-1210580c6caa",
"panama-papers.jpg",
"JPEG",
string.Empty,
0xF56B,
0d,
"xmp.did:BDE940CBF51B11E59D759CDA690663E3",
7,
true,
0xF694l,
0x10dd4L
},
new object[]
{
"372d52eb-5825-8743-81a7-b6f32d51323d",
"huset.jpg",
"JPEG",
string.Empty,
0x9d46,
0d,
"xmp.did:0F94B342065B11E395B1FD506DED6B07",
7,
true,
0x9E60L,
0xc60cL
},
};
var basePath = "" + Path.DirectorySeparatorChar;
string Output = "output" + Path.DirectorySeparatorChar;
// PSD 파일에 있는 스마트 오브젝트의 데이터를 파일로 저장합니다.
void SaveSmartObjectData(string prefix, string fileName, byte[] data)
{
var filePath = basePath + prefix + "_" + fileName;
using (var container = FileStreamContainer.CreateFileStream(filePath, false))
{
container.Write(data);
}
}
// PSD 파일의 스마트 오브젝트에 대한 새 데이터를 로드합니다.
byte[] LoadNewData(string fileName)
{
using (var container = FileStreamContainer.OpenFileStream(basePath + fileName))
{
return container.ToBytes();
}
}
// PSD Lnk2 / Lnk3 리소스의 속성과 PSD 이미지의 liFD 데이터 소스를 가져오고 설정합니다.
void ExampleOfLnk2ResourceSupport(
string fileName,
int dataSourceCount,
int length,
int newLength,
object[] dataSourceExpectedValues)
{
using (PsdImage image = (PsdImage)Image.Load(basePath + fileName))
{
Lnk2Resource lnk2Resource = null;
foreach (var resource in image.GlobalLayerResources)
{
lnk2Resource = resource as Lnk2Resource;
if (lnk2Resource != null)
{
AssertAreEqual(lnk2Resource.DataSourceCount, dataSourceCount);
AssertAreEqual(lnk2Resource.Length, length);
AssertAreEqual(lnk2Resource.IsEmpty, false);
for (int i = 0; i < lnk2Resource.DataSourceCount; i++)
{
LiFdDataSource lifdSource = lnk2Resource[i];
object[] expected = (object[])dataSourceExpectedValues[i];
AssertAreEqual(LinkDataSourceType.liFD, lifdSource.Type);
AssertAreEqual(new Guid((string)expected[0]), lifdSource.UniqueId);
AssertAreEqual(expected[1], lifdSource.OriginalFileName);
AssertAreEqual(expected[2], lifdSource.FileType.TrimEnd(' '));
AssertAreEqual(expected[3], lifdSource.FileCreator.TrimEnd(' '));
AssertAreEqual(expected[4], lifdSource.Data.Length);
AssertAreEqual(expected[5], lifdSource.AssetModTime);
AssertAreEqual(expected[6], lifdSource.ChildDocId);
AssertAreEqual(expected[7], lifdSource.Version);
AssertAreEqual((bool)expected[8], lifdSource.HasFileOpenDescriptor);
AssertAreEqual(expected[9], lifdSource.Length);
if (lifdSource.HasFileOpenDescriptor)
{
AssertAreEqual(-1, lifdSource.CompId);
AssertAreEqual(-1, lifdSource.OriginalCompId);
lifdSource.CompId = int.MaxValue;
}
SaveSmartObjectData(
Output + fileName,
lifdSource.OriginalFileName,
lifdSource.Data);
lifdSource.Data = LoadNewData("new_" + lifdSource.OriginalFileName);
AssertAreEqual(expected[10], lifdSource.Length);
lifdSource.ChildDocId = Guid.NewGuid().ToString();
lifdSource.AssetModTime = double.MaxValue;
lifdSource.FileType = "test";
lifdSource.FileCreator = "me";
}
AssertAreEqual(newLength, lnk2Resource.Length);
break;
}
}
AssertAreEqual(true, lnk2Resource != null);
if (image.BitsPerChannel < 32) // 채널당 32비트 저장은 아직 지원되지 않습니다.
{
image.Save(basePath + Output + fileName, new PsdOptions(image));
}
}
}
// 이 예제는 채널당 8비트에 대한 PSD Lnk2 리소스 및 해당 liFD 데이터 소스의 속성을 가져오고 설정하는 방법을 보여줍니다.
ExampleOfLnk2ResourceSupport("rgb8_2x2_embedded_png.psd", 1, 0x12C, 0x0000079c, Lnk2ResourceSupportCases);
// 이 예제는 채널당 32비트에 대한 PSD Lnk3 리소스 및 해당 liFD 데이터 소스의 속성을 가져오고 설정하는 방법을 보여줍니다.
ExampleOfLnk2ResourceSupport("Layered PSD file smart objects.psd", 2, 0x19504, 0x0001d3e0, LayeredLnk3ResourceSupportCases);
// 이 예제는 채널당 16비트에 대한 PSD Lnk2 리소스 및 해당 liFD 데이터 소스의 속성을 가져오고 설정하는 방법을 보여줍니다.
ExampleOfLnk2ResourceSupport("LayeredSmartObjects16bit.psd", 2, 0x19504, 0x0001d3e0, LayeredLnk2ResourceSupportCases);
또한보십시오
- class LiFdDataSource
- class Lnk2Resource
- 네임스페이스 Aspose.PSD.FileFormats.Psd.Layers.LayerResources
- 집회 Aspose.PSD