استخدام طبقة التعديل لتحسين PSD

نظرة عامة

يستكشف هذا المقال تحرير طبقات التعديل في Aspose.PSD للجافا. تعتبر طبقات التعديل ميزة قوية في تحرير الصور تسمح لك بإجراء تغييرات غير مدمرة على صورتك. يوفر Aspose.PSD مجموعة شاملة من فصائل طبقات التعديل يمكنك استخدامها لتعديل جوانب مختلفة من صورك.

لتوضيح تحرير طبقات التعديل، سنقدم مقتطف شفرة مثال في نهاية الصفحة يحمل صورة PSD ويطبق تعديلات مختلفة على طبقاتها.

في مقتطف الشفرة التالي، نبدأ بتحميل صورة PSD باستخدام طريقة PsdImage.load(). ثم نعد الخيارات لحفظ ملفات الإخراج بتنسيق PNG. تسمح فئة PngOptions لنا بتحديد نوع اللون لصورة الإخراج.

بعد ذلك، نكرر من خلال كل طبقة في صورة PSD ونتحقق من نوعها باستخدام الطريقة isAssignable(). إذا كانت الطبقة من نوع معين، نحولها إلى ذلك النوع باستخدام الطريقة cast() ونطبق التعديل المطلوب. على سبيل المثال، نضبط سطوع وتباين BrightnessContrastLayer، نعدّل المستويات LevelsLayer، نضيف نقطة منحنى لطبقة CurvesLayer، وهكذا.

يمكنك إضافة شيفرات إضافية لتطبيق تعديلات أخرى على طبقاتها الخاصة. يوفر Aspose.PSD مجموعة واسعة من فئات طبقات التعديل، مثل ExposureLayer, HueSaturationLayer, ColorBalanceAdjustmentLayer, BlackWhiteAdjustmentLayer, PhotoFilterLayer, ChannelMixerLayer, InvertAdjustmentLayer, PosterizeLayer, ThresholdLayer, SelectiveColorLayer والمزيد.

أخيرًا، نحفظ الصورة المعدّلة باستخدام طريقة save() لفئة PsdImage.

توفر هذه النظرة العامة أساسيات كيفية تحرير طبقات التعديل في Aspose.PSD للغة الجافا. يمكنك تخصيص التعديلات وفقا لاحتياجاتك واستكشاف الخيارات المختلفة المتاحة في وثائق واجهة برمجة التطبيقات.

يرجى التحقق من المثال الكامل أدناه.

مثال

public class AdjustmentLayerEnhancementTest {
public static void main(String[] args) {
String sourcePsd = "AllAdjustments.psd";
String outputOrigPng = "AllAdjustments_orig.png";
String outputModPng = "AllAdjustments_mod.png";
PngOptions pngOpt = new PngOptions();
pngOpt.setColorType(PngColorType.TruecolorWithAlpha);
try (PsdImage image = (PsdImage) PsdImage.load(sourcePsd)) {
image.save(outputOrigPng, pngOpt);
Layer[] layers = image.getLayers();
for (Layer layer : layers) {
if (layer instanceof BrightnessContrastLayer) {
BrightnessContrastLayer br = (BrightnessContrastLayer) layer;
br.setBrightness(-br.getBrightness());
br.setContrast(-br.getContrast());
}
if (layer instanceof LevelsLayer) {
LevelsLayer levels = (LevelsLayer) layer;
LevelChannel masterChannel = levels.getMasterChannel();
masterChannel.setOutputShadowLevel((short) 30);
masterChannel.setInputShadowLevel((short) 5);
masterChannel.setInputMidtoneLevel(2);
masterChannel.setOutputHighlightLevel((short) 213);
masterChannel.setInputHighlightLevel((short) 120);
}
if (layer instanceof CurvesLayer) {
CurvesLayer curves = (CurvesLayer) layer;
CurvesContinuousManager manager = (CurvesContinuousManager) curves.getCurvesManager();
manager.addCurvePoint(2, (byte) 150, (byte) 180);
}
if (layer instanceof ExposureLayer) {
ExposureLayer exp = (ExposureLayer) layer;
exp.setExposure((float) (exp.getExposure() + 0.1));
}
if (layer instanceof HueSaturationLayer) {
HueSaturationLayer hue = (HueSaturationLayer) layer;
hue.setHue((short) -15);
hue.setSaturation((short) 30);
}
if (layer instanceof ColorBalanceAdjustmentLayer) {
ColorBalanceAdjustmentLayer colorBal = (ColorBalanceAdjustmentLayer) layer;
colorBal.setMidtonesCyanRedBalance((short) 30);
}
if (layer instanceof BlackWhiteAdjustmentLayer) {
BlackWhiteAdjustmentLayer bw = (BlackWhiteAdjustmentLayer) layer;
bw.setReds(30);
bw.setGreens(25);
bw.setBlues(40);
}
if (layer instanceof PhotoFilterLayer) {
PhotoFilterLayer photoFilter = (PhotoFilterLayer) layer;
photoFilter.setColor(Color.getAzure());
}
if (layer instanceof ChannelMixerLayer) {
ChannelMixerLayer channelMixer = (ChannelMixerLayer) layer;
RgbMixerChannel channel = (RgbMixerChannel) channelMixer.getChannelByIndex(0);
channel.setGreen((short) 120);
channel.setRed((short) 50);
channel.setBlue((short) 70);
channel.setConstant((short) (channel.getConstant() + 10));
}
if (layer instanceof PosterizeLayer) {
PosterizeLayer post = (PosterizeLayer) layer;
post.setLevels((short) 3);
}
if (layer instanceof ThresholdLayer) {
ThresholdLayer threshold = (ThresholdLayer) layer;
threshold.setLevel((short) 15);
}
if (layer instanceof SelectiveColorLayer) {
SelectiveColorLayer selectiveColor = (SelectiveColorLayer) layer;
CmykCorrection correction = new CmykCorrection();
correction.setCyan((short) 25);
correction.setMagenta((short) 10);
correction.setYellow((short) -15);
correction.setBlack((short) 5);
selectiveColor.setCmykCorrection(SelectiveColorsTypes.Cyans, correction);
}
}
image.save(outputModPng, pngOpt);
} catch (Exception e) {
e.printStackTrace();
}
}
}