Καθορίζει την κλάση που περιέχει πληροφορίες για ένα ενσωματωμένο αρχείο σε μορφή PSD 32 bit ανά εικόνα καναλιού. Ο πόρος σύνδεσης μπορεί να περιέχει πολλάLiFdDataSource στιγμιότυπα στα οποία μπορεί να προσπελαστεί ο δείκτης.
Αυτό το παράδειγμα δείχνει πώς να αποκτήσετε και να ορίσετε ιδιότητες των Lnk2Resource και Lnk3Resource.
[C#]voidAssertAreEqual(objectexpected,objectactual){if(!object.Equals(actual,expected)){thrownewFormatException(string.Format("Actual value {0} are not equal to expected {1}.",actual,expected));}}object[]Lnk2ResourceSupportCases=newobject[]{newobject[]{"00af34a0-a90b-674d-a821-73ee508c5479","rgb8_2x2.png","png",string.Empty,0x53,0d,string.Empty,7,true,0x124L,0x74cL}};object[]LayeredLnk2ResourceSupportCases=newobject[]{newobject[]{"69ac1c0d-1b74-fd49-9c7e-34a7aa6299ef","huset.jpg","JPEG",string.Empty,0x9d46,0d,"xmp.did:0F94B342065B11E395B1FD506DED6B07",7,true,0x9E60L,0xc60cL},newobject[]{"5a7d1965-0eae-b24e-a82f-98c7646424c2","panama-papers.jpg","JPEG",string.Empty,0xF56B,0d,"xmp.did:BDE940CBF51B11E59D759CDA690663E3",7,true,0xF694L,0x10dd4L},};object[]LayeredLnk3ResourceSupportCases=newobject[]{newobject[]{"2fd7ba52-0221-de4c-bdc4-1210580c6caa","panama-papers.jpg","JPEG",string.Empty,0xF56B,0d,"xmp.did:BDE940CBF51B11E59D759CDA690663E3",7,true,0xF694l,0x10dd4L},newobject[]{"372d52eb-5825-8743-81a7-b6f32d51323d","huset.jpg","JPEG",string.Empty,0x9d46,0d,"xmp.did:0F94B342065B11E395B1FD506DED6B07",7,true,0x9E60L,0xc60cL},};varbasePath=""+Path.DirectorySeparatorChar;stringOutput="output"+Path.DirectorySeparatorChar;// Αποθηκεύει τα δεδομένα ενός έξυπνου αντικειμένου σε αρχείο PSD σε ένα αρχείο.voidSaveSmartObjectData(stringprefix,stringfileName,byte[]data){varfilePath=basePath+prefix+"_"+fileName;using(varcontainer=FileStreamContainer.CreateFileStream(filePath,false)){container.Write(data);}}// Φορτώνει τα νέα δεδομένα για ένα έξυπνο αντικείμενο σε αρχείο PSD.byte[]LoadNewData(stringfileName){using(varcontainer=FileStreamContainer.OpenFileStream(basePath+fileName)){returncontainer.ToBytes();}}// Λαμβάνει και ορίζει ιδιότητες του πόρου PSD Lnk2 / Lnk3 και των πηγών δεδομένων του liFD στην εικόνα PSDvoidExampleOfLnk2ResourceSupport(stringfileName,intdataSourceCount,intlength,intnewLength,object[]dataSourceExpectedValues){using(PsdImageimage=(PsdImage)Image.Load(basePath+fileName)){Lnk2Resourcelnk2Resource=null;foreach(varresourceinimage.GlobalLayerResources){lnk2Resource=resourceasLnk2Resource;if(lnk2Resource!=null){AssertAreEqual(lnk2Resource.DataSourceCount,dataSourceCount);AssertAreEqual(lnk2Resource.Length,length);AssertAreEqual(lnk2Resource.IsEmpty,false);for(inti=0;i<lnk2Resource.DataSourceCount;i++){LiFdDataSourcelifdSource=lnk2Resource[i];object[]expected=(object[])dataSourceExpectedValues[i];AssertAreEqual(LinkDataSourceType.liFD,lifdSource.Type);AssertAreEqual(newGuid((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 bit ανά κανάλι δεν υποστηρίζεται ακόμη{image.Save(basePath+Output+fileName,newPsdOptions(image));}}}// Αυτό το παράδειγμα δείχνει πώς να αποκτήσετε και να ορίσετε ιδιότητες του πόρου PSD Lnk2 και των πηγών δεδομένων του liFD για 8 bit ανά κανάλι.ExampleOfLnk2ResourceSupport("rgb8_2x2_embedded_png.psd",1,0x12C,0x0000079c,Lnk2ResourceSupportCases);// Αυτό το παράδειγμα δείχνει πώς να αποκτήσετε και να ορίσετε ιδιότητες του πόρου PSD Lnk3 και των πηγών δεδομένων του liFD για 32 bit ανά κανάλι.ExampleOfLnk2ResourceSupport("Layered PSD file smart objects.psd",2,0x19504,0x0001d3e0,LayeredLnk3ResourceSupportCases);// Αυτό το παράδειγμα δείχνει πώς να αποκτήσετε και να ορίσετε ιδιότητες του πόρου PSD Lnk2 και των πηγών δεδομένων του liFD για 16 bit ανά κανάλι.ExampleOfLnk2ResourceSupport("LayeredSmartObjects16bit.psd",2,0x19504,0x0001d3e0,LayeredLnk2ResourceSupportCases);