SmartObjectLayer.Contents
SmartObjectLayer.Contents property
스마트 개체 레이어 콘텐츠를 가져오거나 설정합니다. 포함된 스마트 개체 콘텐츠는 포함된 원시 이미지 파일입니다.Data
및 해당 속성. 연결된 고급 개체 콘텐츠는 연결된 이미지 파일의 원시 콘텐츠(사용 가능한 경우)이며 해당 속성은 다음과 같습니다.LiFeDataSource
. Adobe� Photoshop� � 그래픽 라이브러리에서 로드하는 것은 지원하지 않습니다.IsLibraryLink
is true. 일반 링크 파일의 경우 처음에는RelativePath
소스 이미지 경로에 대해 상대적으로 파일 찾기SourceImagePath , 사용할 수 없는 경우 살펴봅니다.FullPath
, 그렇지 않은 경우 이미지가 있는 동일한 디렉토리에서 링크 파일을 찾습니다.SourceImagePath .
public byte[] Contents { get; set; }
자산 가치
byte[] 스마트 오브젝트 레이어 내용.
예외
예외 | 상태 |
---|---|
NotSupportedException | Adobe� Photoshop� �� 라이브러리에서 콘텐츠를 가져올 수 없습니다. |
예
다음 코드는 Embedded Smart objects의 지원을 보여줍니다.
[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));
}
}
// 이 예제는 PSD 파일에서 스마트 오브젝트 레이어를 변경하고 스마트 오브젝트 원본 임베디드 콘텐츠를 내보내거나 업데이트하는 방법을 보여줍니다.
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);
// PSD 스마트 개체 레이어에서 포함된 스마트 개체 이미지를 내보내겠습니다.
smartObjectLayer.ExportContents(exportPath);
// 원본 이미지가 제대로 저장되었는지 확인해보자
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);
// 원본 스마트 오브젝트 이미지를 반전시키자
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);
// PSD 레이어에 포함된 스마트 오브젝트 이미지를 교체해 보겠습니다.
smartObjectLayer.ReplaceContents(innerImage);
}
// 업데이트된 이미지가 제대로 저장되었는지 확인해보자
image.Save(psd2OutputPath, new PsdOptions(image));
image.Save(png2OutputPath, new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
}
}