Class SmartObjectLayer

SmartObjectLayer class

يحدد فئة SmartObjectLayer التي تحتوي على ملف PSD أو كائن ذكي مرتبط في الملف الخارجي. باستخدام الكائنات الذكية ، يمكنك: إجراء تحويلات غير مدمرة. يمكنك تغيير مقياس طبقة أو تدويرها أو إمالتها أو تشويهها أو تحويل منظورها أو التواء إلى layer دون فقد بيانات الصورة الأصلية أو جودتها لأن التحويلات لا تؤثر على البيانات الأصلية . العمل مع البيانات المتجهة ، مثل العمل الفني المتجه من Illustrator ، وإلا سيتم تنقيطه . إجراء تصفية غير مدمرة. يمكنك تحرير المرشحات المطبقة على Smart Objects في أي وقت. تحرير كائن ذكي واحد وتحديث جميع مثيلاته المرتبطة تلقائيًا . قم بتطبيق قناع طبقة مرتبط أو غير مرتبط بطبقة الكائن الذكي. صور العناصر النائبة للدقة التي قمت باستبدالها لاحقًا بالإصدارات النهائية . في Adobe� Photoshop� ، يمكنك تضمين محتويات صورة في مستند PSD . مزيد من المعلومات هنا:https://helpx.adobe.com/photoshop/using/create-smart-objects.html تحتوي الطبقة التي تحتوي على كائن ذكي مضمن على موارد موضوعة (PlLd) و SoLd بخصائص كائن ذكية . يمكن أن يكون مورد PlLd منفردًا لإصدارات PSD الأقدم ثم 10. تحتوي هذه الموارد على UniqueId من LiFdDataSource في Lnk2Resource العام مع العنصر المضمن filename والمعلمات الأخرى ، بما في ذلك محتويات الملف المضمنة في التنسيق الأصلي كمصفوفة بايت.

public class SmartObjectLayer : Layer

الخصائص

اسموصف
AutoAdjustPalette { get; set; }الحصول على أو تعيين قيمة تشير إلى ما إذا كانت لوحة الضبط التلقائي.
virtual BackgroundColor { get; set; }الحصول على أو تعيين قيمة للون الخلفية .
override BitsPerPixel { get; }الحصول على عدد بتات الصورة لكل بكسل .
BlendingOptions { get; }يحصل على خيارات المزج .
virtual BlendModeKey { get; set; }الحصول على أو تعيين مفتاح وضع المزج.
BlendModeSignature { get; }الحصول على توقيع وضع المزج.
Bottom { get; set; }الحصول على أو تحديد موضع الطبقة السفلية.
Bounds { get; }يحصل على حدود الصورة .
BufferSizeHint { get; set; }الحصول على أو تعيين تلميح حجم المخزن المؤقت الذي تم تحديده بالحجم الأقصى المسموح به لجميع المخازن المؤقتة الداخلية.
ChannelInformation { get; set; }الحصول على معلومات القناة أو تعيينها .
ChannelsCount { get; }الحصول على عدد قنوات الطبقة .
Clipping { get; set; }الحصول على أو تعيين قص الطبقة. 0 = قاعدة ، 1 = غير أساسية .
Container { get; }يحصل على ملفImage حاوية .
Contents { get; set; }الحصول على أو تعيين محتويات طبقة الكائن الذكي. محتويات الكائن الذكي المضمنة هي ملف الصورة الخام المضمن:Data وخصائصه . محتويات الكائن الذكي المرتبط هي المحتوى الأولي لملف الصورة المرتبط إذا كان متاحًا وخصائصه:LiFeDataSource . لا ندعم التحميل من Adobe� Photoshop� �� مكتبة الرسومات عندماIsLibraryLink هو true . بالنسبة لملفات الارتباط العادية ، نستخدم في البدايةRelativePath للبحث عن الملف نسبيًا في مسار الصورة المصدرSourceImagePath ، إذا لم يكن متوفرًا ننظر إليهFullPath ، إذا لم يكن كذلك ، فنحن نبحث عن ملف الارتباط في نفس الدليل حيث توجد صورتنا:SourceImagePath .
ContentsBounds { get; set; }الحصول على أو تعيين حدود محتوى الكائن الذكي.
ContentsSource { get; set; }الحصول على أو تعيين مصدر محتوى الكائن الذكي.
ContentType { get; }يحصل على نوع محتوى طبقة الكائن الذكي . محتويات الكائن الذكي المضمنة هي ملف الصورة الخام المضمن:Data . محتويات الكائن الذكي المرتبط هي المحتويات الأولية لملف الصورة المرتبط إذا كان متاحًا:LiFeDataSource . لا ندعم التحميل من Adobe� Photoshop� �� مكتبة الرسومات عندماIsLibraryLink هو true . بالنسبة لملفات الارتباط العادية ، نستخدم في البدايةRelativePath للبحث عن الملف نسبيًا في مسار الصورة المصدرSourceImagePath ، إذا لم يكن متوفرًا ننظر إليهFullPath ، إذا لم يكن كذلك ، فنحن نبحث عن ملف الارتباط في نفس الدليل حيث توجد صورتنا:SourceImagePath .
DataStreamContainer { get; }يحصل على دفق بيانات الكائن.
DisplayName { get; set; }الحصول على أو تحديد اسم عرض الطبقة.
Disposed { get; }يحصل على قيمة تشير إلى ما إذا كان هذا المثيل قد تم التخلص منه.
ExtraLength { get; }الحصول على طول معلومات الطبقة الإضافي بالبايت.
virtual FileFormat { get; }يحصل على قيمة تنسيق الملف
Filler { get; set; }الحصول على أو تعيين حشو الطبقة.
FillOpacity { get; set; }الحصول على أو تعيين تعتيم التعبئة.
Flags { get; set; }الحصول على إشارات الطبقة أو تعيينها. بت 0 = الشفافية المحمية ؛ بت 1 = مرئي ؛ بت 2 = عفا عليها الزمن ؛ بت 3 = 1 لـ Photoshop 5.0 والإصدارات الأحدث ، تخبر ما إذا كانت البتة 4 تحتوي على معلومات مفيدة ؛ بت 4 = بيانات البكسل غير ذات الصلة بمظهر المستند.
override HasAlpha { get; }يحصل على قيمة تشير إلى ما إذا كان هذا المثيل يحتوي على alpha.
virtual HasBackgroundColor { get; set; }الحصول على أو تعيين قيمة تشير إلى ما إذا كانت الصورة لها لون خلفية.
virtual HasTransparentColor { get; set; }يحصل على قيمة تشير إلى ما إذا كانت الصورة ذات لون شفاف.
override Height { get; }الحصول على ارتفاع الصورة .
virtual HorizontalResolution { get; set; }الحصول على أو تعيين الدقة الأفقية ، بالبكسل في البوصة ، لهذاRasterImage .
virtual ImageOpacity { get; }يحصل على عتامة هذه الصورة .
InterruptMonitor { get; set; }الحصول على أو تعيين شاشة المقاطعة.
override IsCached { get; }يحصل على قيمة تشير إلى ما إذا كانت بيانات الصورة مخزنة مؤقتًا حاليًا.
IsRawDataAvailable { get; }يحصل على قيمة تشير إلى ما إذا كان تحميل البيانات الأولية متاحًا.
IsVisible { get; set; }الحصول على أو تعيين قيمة تشير إلى ما إذا كانت الطبقة مرئية
virtual IsVisibleInGroup { get; }يحصل على قيمة تشير إلى ما إذا كان هذا المثيل مرئيًا في المجموعة (إذا لم تكن الطبقة في مجموعة فهذا يعني مجموعة الجذر).
LayerBlendingRangesData { get; set; }الحصول على أو تعيين بيانات نطاقات مزج الطبقة.
LayerCreationDateTime { get; set; }الحصول على أو تحديد وقت تاريخ إنشاء الطبقة.
LayerLock { get; set; }الحصول على قفل الطبقة أو تعيينه. لاحظ أنه إذا تم تعيين العلامة LayerFlags.TransparencyProtected ، فسيتم استبدالها بعلامة قفل الطبقة.
LayerMaskData { get; set; }الحصول على أو تعيين بيانات قناع الطبقة.
LayerOptions { get; }يحصل على خيارات الطبقة .
Left { get; set; }الحصول على أو تحديد موضع الطبقة اليسرى.
Length { get; }الحصول على الطول الكلي للطبقة بالبايت.
Name { get; set; }الحصول على أو تحديد اسم الطبقة.
Opacity { get; set; }الحصول على أو تحديد عتامة الطبقة. 0 = شفاف ، 255 = معتم .
Palette { get; set; }الحصول على لوحة الألوان أو تعيينها. لا يتم استخدام لوحة الألوان عندما يتم تمثيل وحدات البكسل مباشرةً.
virtual PremultiplyComponents { get; set; }الحصول على أو تعيين قيمة تشير إلى ما إذا كان يجب مضاعفة مكونات الصورة مسبقًا.
RawCustomColorConverter { get; set; }الحصول على أو تعيين محول الألوان المخصص
virtual RawDataFormat { get; }يحصل على تنسيق البيانات الأولية .
RawDataSettings { get; }يحصل على إعدادات البيانات الأولية الحالية. ملاحظة عند استخدام هذه الإعدادات ، يتم تحميل البيانات بدون تحويل.
RawFallbackIndex { get; set; }الحصول على الفهرس الاحتياطي أو تعيينه لاستخدامه عندما يكون فهرس اللوحة خارج الحدود
RawIndexedColorConverter { get; set; }الحصول على أو تعيين محول الألوان المفهرس
virtual RawLineSize { get; }الحصول على حجم الخط الخام بالبايت.
Resources { get; set; }الحصول على موارد الطبقة أو تعيينها.
Right { get; set; }الحصول على أو تحديد موضع الطبقة الصحيح.
SheetColorHighlight { get; set; }الحصول على أو تعيين تمييز لون الورقة الزخرفية في قائمة الطبقات
Size { get; }يحصل على حجم الصورة .
SmartFilters { get; }الحصول على المرشحات الذكية.
SmartObjectProvider { get; }يحصل على موفر الكائن الذكي.
Top { get; set; }الحصول على أو تحديد موضع الطبقة العليا.
virtual TransparentColor { get; set; }الحصول على لون شفاف للصورة .
virtual UpdateXmpData { get; set; }الحصول على أو تعيين قيمة تشير إلى ما إذا كان سيتم تحديث بيانات تعريف XMP.
virtual UseRawData { get; set; }الحصول على أو تعيين قيمة تشير إلى ما إذا كان سيتم استخدام تحميل البيانات الأولية عند توفر تحميل البيانات الأولية.
virtual VerticalResolution { get; set; }الحصول على أو تحديد الدقة الرأسية ، بالبكسل في البوصة ، لهذاRasterImage .
override Width { get; }الحصول على عرض الصورة .
virtual XmpData { get; set; }الحصول على بيانات تعريف XMP أو تعيينها.

طُرق

اسموصف
AddLayerMask(LayerMaskData)يضيف القناع إلى الطبقة الحالية.
override AdjustBrightness(int)ضبط سطوع الصورة .
override AdjustContrast(float)تباين الصورة
override AdjustGamma(float)تصحيح جاما لصورة .
override AdjustGamma(float, float, float)تصحيح جاما لصورة .
override BinarizeBradley(double)ثنائية الصورة باستخدام خوارزمية العتبة التكيفية لبرادلي باستخدام عتبة الصورة المتكاملة
override BinarizeBradley(double, int)ثنائية الصورة باستخدام خوارزمية العتبة التكيفية لبرادلي باستخدام عتبة الصورة المتكاملة
override BinarizeFixed(byte)ثنائية الصورة مع عتبة محددة مسبقًا
override BinarizeOtsu()ثنائية الصورة مع عتبة Otsu
override CacheData()يخزن البيانات ويضمن عدم إجراء أي تحميل إضافي للبيانات من الأساسDataStreamContainer .
CanSave(ImageOptionsBase)يحدد ما إذا كان يمكن حفظ الصورة بتنسيق الملف المحدد الذي تم تمثيله بواسطة خيارات الحفظ التي تم تمريرها.
ConvertToLinked(string)يحول هذا الكائن الذكي المضمن إلى كائن ذكي مرتبط.
override Crop(Rectangle)قص الصورة.
virtual Crop(int, int, int, int)اقتصاص الصورة مع التحولات .
Dispose()التخلص من المثيل الحالي.
Dither(DitheringMethod, int)يقوم بالتردد على الصورة الحالية.
override Dither(DitheringMethod, int, IColorPalette)يقوم بالتردد على الصورة الحالية.
DrawImage(Point, RasterImage)يرسم الصورة على الطبقة .
DuplicateLayer()ينشئ طبقة كائن ذكية جديدة عن طريق نسخ هذه الطبقة. لاحظ أنه بالنسبة للكائنات الذكية المضمنة ، تتم مشاركة الصورة المضمنة. إذا كنت تريد نسخ استخدام الصورة المضمنةNewSmartObjectViaCopy طريقة .
EmbedLinked()يدمج الكائن الذكي المرتبط في هذه الطبقة.
ExportContents(string)لتصدير المحتويات المضمنة أو المرتبطة إلى ملف.
virtual Filter(Rectangle, FilterOptionsBase)يقوم بتصفية المستطيل المحدد .
GetArgb32Pixel(int, int)الحصول على صورة ARGB بكسل 32 بت .
GetDefaultArgb32Pixels(Rectangle)الحصول على صفيف ARGB بكسل الافتراضي 32 بت.
virtual GetDefaultOptions(object[])يحصل على الخيارات الافتراضية.
GetDefaultPixels(Rectangle, IPartialArgb32PixelLoader)الحصول على مصفوفة البكسل الافتراضية باستخدام محمل البكسل الجزئي.
GetDefaultRawData(Rectangle, RawDataSettings)يحصل على مصفوفة البيانات الأولية الافتراضية.
GetDefaultRawData(Rectangle, IPartialRawDataLoader, RawDataSettings)يحصل على مصفوفة البيانات الأولية الافتراضية باستخدام محمل البكسل الجزئي.
override GetHashCode()إرجاع رمز تجزئة لهذا المثال.
virtual GetModifyDate(bool)الحصول على تاريخ ووقت آخر تعديل لصورة المورد.
virtual GetOriginalOptions()الحصول على الخيارات بناءً على إعدادات الملف الأصلية. يمكن أن يكون هذا مفيدًا في الحفاظ على عمق البت والمعلمات الأخرى للصورة الأصلية دون تغيير . على سبيل المثال ، إذا قمنا بتحميل صورة PNG أبيض وأسود مع 1 بت لكل بكسل ثم احفظه باستخدام the Save الطريقة ، سيتم إنتاج صورة PNG الناتجة بمعدل 8 بت لكل بكسل. لتجنب ذلك وحفظ صورة PNG بمعدل 1 بت لكل بكسل ، استخدم هذه الطريقة للحصول على خيارات الحفظ المقابلة وتمريرها إلىSaveالطريقة كمعامل ثاني.
GetPixel(int, int)الحصول على بكسل صورة .
GetSkewAngle()الحصول على زاوية الانحراف. هذه الطريقة قابلة للتطبيق على المستندات النصية الممسوحة ضوئيًا ، لتحديد زاوية الانحراف عند المسح.
override Grayscale()تحويل الصورة إلى تمثيلها بالتدرج الرمادي
LoadArgb32Pixels(Rectangle)تحميل 32 بت ARGB بكسل .
LoadArgb64Pixels(Rectangle)تحميل 64 بت ARGB بكسل .
LoadCmyk32Pixels(Rectangle)تحميل وحدات البكسل بتنسيق CMYK .
LoadContents(LoadOptions)الحصول على محتويات الصورة المضمنة أو المرتبطة لطبقة الكائن الذكي.
LoadPartialArgb32Pixels(Rectangle, IPartialArgb32PixelLoader)تحميل 32 بت ARGB بكسل جزئيًا بواسطة الحزم.
LoadPartialPixels(Rectangle, IPartialPixelLoader)تحميل وحدات البكسل جزئيًا بالحزم .
LoadPixels(Rectangle)تحميل بكسل .
LoadRawData(Rectangle, RawDataSettings, IPartialRawDataLoader)تحميل البيانات الأولية .
LoadRawData(Rectangle, Rectangle, RawDataSettings, IPartialRawDataLoader)تحميل البيانات الأولية .
virtual MergeLayerTo(Layer)يدمج الطبقة في layer
NewSmartObjectViaCopy()يُنشئ طبقة كائن ذكية جديدة من خلال التعامل مع هذه الطبقة. إعادة إنتاج Layer -> Smart Objects -> New Smart Object عبر وظيفة Copy في Adobe� Photoshop�. لاحظ أنه تم تمكينها فقط للكائنات الذكية المضمنة لأن الصورة المضمنة يتم أيضًا نسخه . إذا كنت تريد مشاركة استخدام الصورة المضمنةDuplicateLayer طريقة .
NormalizeAngle()تطبيع الزاوية. هذه الطريقة قابلة للتطبيق على المستندات النصية الممسوحة ضوئيًا للتخلص من المسح المنحرف . تستخدم هذه الطريقةGetSkewAngle وRotate الأساليب .
virtual NormalizeAngle(bool, Color)تطبيع الزاوية. هذه الطريقة قابلة للتطبيق على المستندات النصية الممسوحة ضوئيًا للتخلص من المسح المنحرف . تستخدم هذه الطريقةGetSkewAngle وRotate الأساليب .
ReadArgb32ScanLine(int)يقرأ خط المسح بالكامل بواسطة فهرس خط المسح المحدد.
ReadScanLine(int)يقرأ خط المسح بالكامل بواسطة فهرس خط المسح المحدد.
RelinkToFile(string)إعادة ربط الكائن الذكي المرتبط بملف جديد. ليست هناك حاجة لاستدعاء طريقة UpdateModifiedContent بعد ذلك.
ReplaceColor(Color, byte, Color)يستبدل لونًا بآخر بالاختلاف المسموح به ويحتفظ بقيمة ألفا الأصلية لحفظ الحواف المتجانسة.
virtual ReplaceColor(int, byte, int)يستبدل لونًا بآخر بالاختلاف المسموح به ويحتفظ بقيمة ألفا الأصلية لحفظ الحواف المتجانسة.
ReplaceContents(Image)يستبدل محتويات الكائن الذكي المضمنة في طبقة الكائن الذكي.
ReplaceContents(string)يستبدل المحتويات بملف . ليست هناك حاجة لاستدعاء طريقة UpdateModifiedContent بعد ذلك.
ReplaceContents(Image, ResolutionSetting)يستبدل محتويات الكائن الذكي المضمنة في طبقة الكائن الذكي.
ReplaceContents(string, ResolutionSetting)يستبدل المحتويات بملف . ليست هناك حاجة لاستدعاء طريقة UpdateModifiedContent بعد ذلك.
ReplaceNonTransparentColors(Color)يستبدل كل الألوان غير الشفافة بلون جديد ويحتفظ بقيمة ألفا الأصلية لحفظ الحواف الناعمة . ملاحظة: إذا كنت تستخدمها على صور بدون شفافية ، فسيتم استبدال كل الألوان بأخرى.
virtual ReplaceNonTransparentColors(int)يستبدل كل الألوان غير الشفافة بلون جديد ويحتفظ بقيمة ألفا الأصلية لحفظ الحواف الناعمة . ملاحظة: إذا كنت تستخدمها على صور بدون شفافية ، فسيتم استبدال كل الألوان بأخرى.
Resize(int, int)يغير حجم الصورة. الافتراضيLeftTopToLeftTopيستخدم .
override Resize(int, int, ImageResizeSettings)تغيير حجم الصورة .
override Resize(int, int, ResizeType)تغيير حجم الصورة .
ResizeHeightProportionally(int)يغير حجم الارتفاع بشكل متناسب .
virtual ResizeHeightProportionally(int, ImageResizeSettings)يغير حجم الارتفاع بشكل متناسب .
virtual ResizeHeightProportionally(int, ResizeType)يغير حجم الارتفاع بشكل متناسب .
ResizeWidthProportionally(int)يغير حجم العرض بشكل متناسب .
virtual ResizeWidthProportionally(int, ImageResizeSettings)يغير حجم العرض بشكل متناسب .
virtual ResizeWidthProportionally(int, ResizeType)يغير حجم العرض بشكل متناسب .
virtual Rotate(float)تدوير الصورة حول المركز .
override Rotate(float, bool, Color)تدوير الصورة حول المركز .
override RotateFlip(RotateFlipType)يقوم بتدوير الصورة أو قلبها أو تدويرها وقلبها.
Save()يحفظ بيانات الصورة في التدفق الأساسي.
override Save(Stream)يحفظ بيانات الكائن في الدفق المحدد.
Save(string)يحفظ بيانات الكائن في موقع الملف المحدد.
Save(Stream, ImageOptionsBase)يحفظ بيانات الصورة إلى التدفق المحدد بتنسيق الملف المحدد وفقًا لخيارات الحفظ.
override Save(string, bool)يحفظ بيانات الكائن في موقع الملف المحدد.
override Save(string, ImageOptionsBase)يحفظ بيانات الكائن في موقع الملف المحدد بتنسيق الملف المحدد وفقًا لخيارات الحفظ.
override Save(Stream, ImageOptionsBase, Rectangle)يحفظ بيانات الصورة إلى التدفق المحدد بتنسيق الملف المحدد وفقًا لخيارات الحفظ.
override Save(string, ImageOptionsBase, Rectangle)يحفظ بيانات الكائن في موقع الملف المحدد بتنسيق الملف المحدد وفقًا لخيارات الحفظ.
SaveArgb32Pixels(Rectangle, int[])يحفظ 32 بت ARGB بكسل .
SaveCmyk32Pixels(Rectangle, int[])يحفظ البكسل .
SavePixels(Rectangle, Color[])يحفظ البكسل .
SaveRawData(byte[], int, Rectangle, RawDataSettings)يحفظ البيانات الأولية .
SetArgb32Pixel(int, int, int)يضبط صورة ARGB بكسل 32 بت للوضع المحدد.
override SetPalette(IColorPalette, bool)يضبط لوحة الصور .
SetPixel(int, int, Color)يضبط بكسل الصورة للوضع المحدد.
virtual SetResolution(double, double)يضبط الدقة لهذا الغرضRasterImage .
ShallowCopy()لإنشاء نسخة سطحية من الطبقة الحالية. من فضلكhttps://msdn.microsoft.com/ru-ru/library/system.object.memberwiseclone(v=vs.110).aspx للشرح .
virtual ToBitmap()تحويل الصورة النقطية إلى الصورة النقطية.
UpdateModifiedContent()يقوم بتحديث ذاكرة التخزين المؤقت لصورة طبقة الكائن الذكي بالمحتوى المعدل.
WriteArgb32ScanLine(int, int[])يكتب خط المسح بالكامل إلى فهرس خط المسح المحدد.
WriteScanLine(int, Color[])يكتب خط المسح بالكامل إلى فهرس خط المسح المحدد.

أمثلة

يوضح الكود التالي دعم الكائنات الذكية المضمنة.

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

أنظر أيضا