إنشاء، فتح وحفظ ملفات PSD
تصدير الصورة إلى PSD
ملف PSD، وهو معروف أيضًا باسم مستند PhotoShop، هو تنسيق الملف الافتراضي الذي يستخدمه Adobe PhotoShop للعمل مع الصور. تسمح Aspose.PSD لك بتحميل وتحرير وحفظ الملفات إلى PSD بحيث يمكن فتحها وتحريرها في PhotoShop. يوضح هذا المقال كيفية حفظ ملف إلى PSD باستخدام Aspose.PSD، ويناقش أيضًا بعض الإعدادات التي يمكن استخدامها عند الحفظ في هذا التنسيق. PsdOptions هو فئة متخصصة في فضاء أسماء ImageOptions تُستخدم لتصدير الصور إلى PSD. لتصدير إلى PSD، قم بإنشاء نسخة من فئة Image، إما منتقاة من ملف صورة موجود (على سبيل المثال، المصغرات) أو إنشائها من البداية. يشرح هذا المقال كيفية القيام بذلك. في الأمثلة أدناه، يتم إنشاء صورة من الصفر. بمجرد إنشائها وملأ بيانات البكسل، قم بحفظ الصورة باستخدام طريقة Save في فئة الصورة، وقم بتوفير كائن PsdOptions كالمعامل الثاني. يمكن تعيين العديد من خصائص فئة PsdOptions للتحويل المتقدم. بعض الخصائص هي الوضع اللوني، طريقة الضغط والإصدار. تدعم Aspose.PSD طرق الضغط التالية من خلال تعداد CompressionMethod:
- طريقة الضغط: Raw
- طريقة الضغط: RLE
- طريقة الضغط: ZipWithoutProtection
- طريقة الضغط: ZipWithProtection
يتم دعم وسائط الألوان التالية من خلال تعداد ColorModes:
- وسائط الألوان: Bitmap
- وسائط الألوان: Grayscale
- وسائط الألوان: RGB
يمكن إضافة موارد إضافية، مثل موارد المصغرات لـ PSD v4.0، v5.0 والأعلى، أو موارد الشبكة والأدلة لـ PSD v4.0 وما فوق. ينشئ الكود أدناه ملف BMP من الصفر، يملأ البكسلات ويحفظه إلى PSD بضغط RLE ووضع ألوان الرمادي. الكود المعروض أدناه يوضح كيفية تصدير الصورة إلى PSD.
String dataDir = Utils.getDataDir(ExportImageToPSD.class) + "PSD/"; | |
// Create a new image from scratch. | |
try (PsdImage bmpImage = new PsdImage(300, 300)) { | |
// Fill image data. | |
Graphics graphics = new Graphics(bmpImage); | |
graphics.clear(Color.getWhite()); | |
Pen pen = new Pen(Color.getBrown()); | |
graphics.drawRectangle(pen, bmpImage.getBounds()); | |
// Create an instance of PsdOptions, Set it's various properties Save image to disk in PSD format | |
PsdOptions psdOptions = new PsdOptions(); | |
psdOptions.setColorMode(ColorModes.Rgb); | |
psdOptions.setCompressionMethod(CompressionMethod.Raw); | |
psdOptions.setVersion(4); | |
bmpImage.save(dataDir + "ExportImageToPSD_output.psd", psdOptions); | |
} |
استيراد الصورة إلى طبقة PSD
يوضح هذا المقال استخدام Aspose.PSD لإضافة أو استيراد صورة إلى طبقة PSD. قد قدمت واجهات تطبيقات برمجة التطبيقات (APIs) الخاصة بـ Aspose.PSD أساليب فعالة وسهلة الاستخدام لتحقيق هذا الهدف. قد قدمت Aspose.PSD الأسلوب DrawImage في فئة Layer لإضافة/استيراد صورة إلى ملف PSD. يتطلب الأسلوب DrawImage وضع وقيمة الصورة لإضافة/استيراد صورة إلى ملف PSD. الخطوات لاستيراد الصورة إلى طبقة PSD بسيطة كما يلي:
- قم بتحميل ملف PSD كصورة باستخدام الأسلوب المصنع المعروض بواسطة فئة Image.
- قم بإنشاء نسخة من فئة Layer وقم بتعيين طبقة الصورة PSD لها.
- قم بتحميل الصورة التي تحتاج إلى إضافتها أو إنشاء واحدة من البداية.
- استدعي أسلوب DrawImage في الطبقة وأحدد الموقع ونموذج الصورة.
- قم بحفظ النتائج.
الكود المعروض أدناه يوضح كيفية استيراد الصورة إلى طبقة PSD.
String dataDir = Utils.getDataDir(ImportImageToPSDLayer.class) + "PSD/"; | |
// Load a PSD file as an image and caste it into PsdImage | |
try (PsdImage image = (PsdImage) Image.load(dataDir + "sample.psd"); | |
//Extract a layer from PSDImage | |
Layer layer = image.getLayers()[1]; | |
// Create an image that is needed to be imported into the PSD file. | |
PsdImage drawImage = new PsdImage(200, 200)) { | |
// Fill image surface as needed. | |
Graphics g = new Graphics(drawImage); | |
g.clear(Color.getYellow()); | |
// Call DrawImage method of the Layer class and pass the image instance. | |
layer.drawImage(new Point(10, 10), drawImage); | |
// Save the results to output path. | |
image.save(dataDir + "ImportImageToPSDLayer_out.psd"); | |
} |
إنشاء مصغرات من ملفات PSD
تعتبر PSD تنسيق مستند أساسي لتطبيق Adobe Photoshop. يخزن Adobe Photoshop (الإصدار 5.0 وما بعده) معلومات المصغرات لعرض المعاينة في كتلة موارد الصورة التي تتألف من رأس بدءي بطول 28 بايتًا، تتبعه مصغرة JFIF في ترتيب RGB (أحمر، أخضر، أزرق). يوفر واجهة برمجة تطبيقات (API) Aspose.PSD آلية سهلة الاستخدام للوصول إلى موارد ملف PSD. تتضمن هذه الموارد أيضًا مورد المصغرات الذي من الممكن أن يتم الوصول إليه بدوره ويمكن حفظه على القرص وفقًا لاحتياجات التطبيق. الكود المعروض أدناه يوضح كيفية إنشاء مصغرات من ملفات PSD.
String dataDir = Utils.getDataDir(CreateThumbnailsFromPSDFiles.class) + "PSD/"; | |
// Load a PSD file as an image and caste it into PsdImage | |
try (PsdImage image = (PsdImage) Image.load(dataDir + "sample.psd")) { | |
int index = 0; | |
// Iterate over the PSD resources | |
for (int i = 0; i < image.getImageResources().length; i++) { | |
index++; | |
// Check if the resource is of thumbnail type | |
if (image.getImageResources()[i] instanceof ThumbnailResource) { | |
// Retrieve the ThumbnailResource and Check the format of the ThumbnailResource | |
ThumbnailResource thumbnail = (ThumbnailResource) image.getImageResources()[i]; | |
if (thumbnail.getFormat() == ThumbnailFormat.KJpegRgb) { | |
// Create a new BmpImage by specifying the width and height, Store the pixels of thumbnail on to the newly created BmpImage and save image | |
PsdImage thumnailImage = new PsdImage(thumbnail.getWidth(), thumbnail.getHeight()); | |
thumnailImage.savePixels(thumnailImage.getBounds(), thumbnail.getThumbnailData()); | |
thumnailImage.save(dataDir + "CreateThumbnailsFromPSDFiles_out_" + i + ".bmp"); | |
} | |
} | |
} | |
} |
إنشاء ملفات PSD مؤشرة
يمكن لواجهة برمجة تطبيقات Aspose.PSD للجافا إنشاء ملفات PSD مؤشرة من البداية. يوضح هذا المقال استخدام فئتي PsdOptions وPsdImage لإنشاء PSD مؤشرة برسم بعض الأشكال فوق القماش الذي تم إنشاؤه حديثًا. الخطوات البسيطة التالية مطلوبة لإنشاء ملف PSD مؤشرة:
- قم بإنشاء نسخة من PsdOptions وقم بتعيين مصدرها.
- قم بتعيين خاصية ColorMode لـ PsdOptions إلى ColorModes.Indexed.
- إنشاء لوحة ألوان جديدة من مساحة RGB وقم بتعيينها كخاصية Palette لـ PsdOptions.
- قم بتعيين خاصية CompressionMethod إلى خوارزمية الضغط المطلوبة.
- إنشاء صورة PSD جديدة بتسمية طريقة PsdImage.Create.
- رسم الرسومات أو تنفيذ عمليات أخرى وفقًا للاحتياج.
- استدعي أسلوب PsdImage.Save لتنفيذ جميع التغييرات.
الكود المعروض أدناه يوضح كيفية إنشاء ملفات PSD مؤشرة.
String dataDir = Utils.getDataDir(CreateIndexedPSDFiles.class) + "PSD/"; | |
// Create an instance of PsdOptions and set it's properties | |
PsdOptions createOptions = new PsdOptions(); | |
createOptions.setSource(new FileCreateSource(dataDir + "Newsample_out.psd", false)); | |
createOptions.setColorMode(ColorModes.Indexed); | |
createOptions.setVersion(5); | |
// Create a new color palette having RGB colors, Set Palette property & compression method | |
Color[] palette = {Color.getRed(), Color.getGreen(), Color.getBlue(), Color.getYellow()}; | |
createOptions.setPalette(new PsdColorPalette(palette)); | |
createOptions.setCompressionMethod(CompressionMethod.RLE); | |
// Create a new PSD with PsdOptions created previously | |
try (Image psd = Image.create(createOptions, 500, 500)) { | |
// Draw some graphics over the newly created PSD | |
Graphics graphics = new Graphics(psd); | |
graphics.clear(Color.getWhite()); | |
graphics.drawEllipse(new Pen(Color.getRed(), 6), new Rectangle(0, 0, 400, 400)); | |
psd.save(); | |
} |
تصدير طبقة PSD إلى صورة بيكسلية
تسمح Aspose.PSD للجافا بتصدير الطبقات في ملف PSD إلى صور بيكسلية. يرجى استخدام طريقة Aspose.PSD.FileFormats.Psd.Layers.Layer.Save لتصدير الطبقة إلى صورة. يقوم الكود العيني التالي بتحميل ملف PSD وتصدير كل طبقة منه إلى صورة PNG باستخدام Aspose.PSD.FileFormats.Psd.Layers.Layer.Save. بمجرد تصدير جميع الطبقات إلى صور PNG، يمكنك فتحها باستخدام عارض الصورة المفضل لديك. الكود المعروض أدناه يوضح كيفية تصدير طبقة PSD إلى صورة بيكسلية.
String dataDir = Utils.getDataDir(ExportPSDLayerToRasterImage.class) + "PSD/"; | |
// Load a PSD file as an image and caste it into PsdImage | |
try (PsdImage psdImage = (PsdImage) Image.load(dataDir + "sample.psd")) { | |
// Create an instance of PngOptions class | |
PngOptions pngOptions = new PngOptions(); | |
pngOptions.setColorType(PngColorType.TruecolorWithAlpha); | |
// Loop through the list of layers | |
for (int i = 0; i < psdImage.getLayers().length; i++) { | |
// Convert and save the layer to PNG file format. | |
psdImage.getLayers()[i].save(String.format("layer_out{0}.png", i + 1), pngOptions); | |
} | |
} |