تلاعب بصور PNG

تحديد الشفافية لصور PNG

واحدة من مزايا حفظ الصور في شكل PNG هي أنه يمكن أن يكون لـ PNG خلفية شفافة. توفر Aspose.PSD for Java ميزة تحديد الشفافية لفئات PngImage & RasterImage كما هو موضح في القسم أدناه. يمكن استخدام واجهة برمجة التطبيقات Aspose.PSD for Java لضبط أي لون كشفاف أثناء إنشاء صور PNG جديدة أو تحويل الصور الحالية إلى شكل PNG. لهذه الأغراض، قامت واجهة برمجة التطبيقات Aspose.PSD for Java بتعريض خاصية TransparentColor وتعداد PngColorType التي يمكن تحديدها لتحديد أي لون يجب عرضه كشفاف في الصورة PNG. يوضح مقتطف الكود الوارد أدناه كيفية تحويل صورة PSD حالية إلى صورة PNG عبر استخدام البناء المعمول به مسبقاً لـ PngImage وتحديد اللون المرغوب كشفاف.

String dataDir = Utils.getDataDir(SpecifyTransparency.class) + "ModifyingAndConvertingImages/";
try (PsdImage psdImage = (PsdImage) Image.load(dataDir + "sample.psd");
// Initialize PNG image with psd image pixel data.
PsdImage pngImage = new PsdImage(psdImage)) {
// specify the PNG image transparency options and save to file.
pngImage.setTransparentColor(Color.getWhite());
pngImage.setTransparentColor(true);
pngImage.save(dataDir + "Specify_Transparency_result.png");
}

ضبط الدقة لصور PNG

تعرض Aspose.PSD for Java فئة ResolutionSetting التي يمكن استخدامها لضبط الدقة لجميع تنسيقات الصور بما في ذلك PNG. يوضح هذا المقال استخدام واجهة برمجة التطبيقات Aspose.PSD for Java لتعيين معلمات الدقة الأفقية والرأسية لتنسيق الصور PNG. يحمل مقتطف الكود أدناه صورة PSD حالية ويحولها إلى تنسيق PNG كما يقوم بتغيير الدقة.

String dataDir = Utils.getDataDir(SettingResolution.class) + "ModifyingAndConvertingImages/";
try (PsdImage psdImage = (PsdImage) Image.load(dataDir + "sample.psd")) {
// Create an instance of PngOptions, Set the horizontal & vertical resolutions and Save the result on disc
PngOptions options = new PngOptions();
options.setResolutionSettings(new ResolutionSetting(72, 96));
psdImage.save(dataDir + "SettingResolution_output.png", options);
}

ضغط ملفات PNG

شكل الشبكة المحمولة الرسومية (PNG) هو تنسيق ضغط لا فقدان لنقل بيتماب عبر الشبكات. عندما تقوم بحفظ صورة كملف PNG في أي برنامج، قد يطلب منك اختيار مستوى ضغط في نطاق من 0 إلى أي مستوى قصوى. تحديد قيمة هذا الإعداد يضغط في الواقع حجم الملف دون التأثير على جودة الصورة. يصف هذا المقال كيفية سماح واجهة برمجة التطبيقات Aspose.PSD بالتحكم بحجم ملف PNG. يمكن استخدام واجهة برمجة التطبيقات Aspose.PSD لتعيين مستويات الضغط لتنسيق ملف PNG باستخدام فئة PngOptions التي تحتوي على خاصية ضغط من نوع int. تقبل هذه الخاصية قيمة من 0 إلى 9 حيث 9 هو أقصى ضغط. يوضح مقتطف الكود الوارد أدناه كيفية تحديد مستويات الضغط باستخدام واجهة برمجة التطبيقات Aspose.PSD for Java.

String dataDir = Utils.getDataDir(ApplyFilterMethod.class) + "ModifyingAndConvertingImages/";
try (PsdImage psdImage = (PsdImage) Image.load(dataDir + "sample.psd")) {
// Loop over possible CompressionLevel range
for (int i = 0; i <= 9; i++) {
// Create an instance of PngOptions for each resultant PNG, Set CompressionLevel and Save result on disk
PngOptions options = new PngOptions();
options.setCompressionLevel(i);
psdImage.save(dataDir + i + "_out.png", options);
}
}

تحديد عمق البت لصور PNG

يتمثل عمق البت في التصوير في عدد البتات المستخدمة للإشارة إلى لون بكسل واحد في صورة نقطية. مثل جميع تنسيقات البتماب الأخرى، يتم تمثيل عمق لون PNG أيضاً بالبتات مثل 1 بت (2 ألوان)، 2 بت (4 ألوان)، 4 بت (16 لون) و 8 بت (256 لون). يمكن استخدام واجهة برمجة التطبيقات Aspose.PSD for Java لتعيين عمق البت لصور PNG باستخدام خاصية BitDepth المكشوفة بواسطة فئة PngOptions. في الوقت الحالي، يمكن تعيين خاصية BitDepth على 1، 2، 4 أو 8 بتات لأنواع الألوان اللون الرمادي والفهرسة. لأنواع الألوان الأخرى فقط 8 بتات معتمدة. يوضح مقتطف الكود الوارد أدناه كيفية تعيين عمق البت لصورة PNG.

String dataDir = Utils.getDataDir(SpecifyBitDepth.class) + "ModifyingAndConvertingImages/";
try (PsdImage psdImage = (PsdImage) Image.load(dataDir + "sample.psd")) {
// Create an instance of PngOptions, Set the desired ColorType, BitDepth according to the specified ColorType and save image
PngOptions options = new PngOptions();
options.setColorType(PngColorType.Grayscale);
options.setBitDepth((byte) 1);
psdImage.save(dataDir + "SpecifyBitDepth_out.png", options);
}

تطبيق طرق الفلترة على صور PNG

تعرض واجهة برمجة التطبيقات Aspose.PSD for Java تعداد PngFilterType الذي يمكن استخدامه لتعيين نوع الفلترة لصورة PNG. يوضح مقتطف الكود الوارد أدناه كيفية تطبيق الفلترة على ملف PSD حالي إلى صورة PNG عبر استخدام PngFilterType.

String dataDir = Utils.getDataDir(ApplyFilterMethod.class) + "ModifyingAndConvertingImages/";
try (PsdImage psdImage = (PsdImage) Image.load(dataDir + "sample.psd")) {
// Create an instance of PngOptions, Set the PNG filter method and Save changes to the disc
PngOptions options = new PngOptions();
options.setFilterType(PngFilterType.Paeth);
psdImage.save(dataDir + "ApplyFilterMethod_out.png", options);
}

تغيير لون الخلفية لصورة PNG شفافة

يمكن أن تحتوي صور الشكل PNG على خلفية شفافة. توفر Aspose.PSD for Java ميزة تغيير لون الخلفية لصورة PNG التي تحتوي على خلفية شفافة. يمكن استخدام واجهة برمجة التطبيقات Aspose.PSD for Java لضبط/تغيير لون صورة PNG شفافة. يوضح مقتطف الكود الوارد أدناه كيفية ضبط/تغيير لون الخلفية لصورة PNG شفافة.

String dataDir = Utils.getDataDir(ChangeBackgroundColor.class) + "ModifyingAndConvertingImages/";
try (PsdImage psdImage = (PsdImage) Image.load(dataDir + "sample.psd");
// Convert to PngImage based on PsdImage.
PsdImage pngImage = new PsdImage(psdImage)) {
int[] pixels = pngImage.loadArgb32Pixels(pngImage.getBounds());
// Iterate through the pixel array and Check the pixel information
//that if it is a transparent color pixel and Change the pixel color to white
int transparent = pngImage.getTransparentColor().toArgb();
int replacementColor = Color.getYellow().toArgb();
for (int i = 0; i < pixels.length; i++) {
if (pixels[i] == transparent) {
pixels[i] = replacementColor;
}
}
// Replace the pixel array into the image.
pngImage.saveArgb32Pixels(pngImage.getBounds(), pixels);
pngImage.save(dataDir + "ChangeBackground_out.png");
}