دعم طبقات التعبئة

دعم طبقات التعبئة بملء اللون

يوضح هذا المقال كيفية ملء طبقة PSD باللون. يرجى استخدام Aspose.PSD.FileFormats.Psd.Layers.FillLayer لإضافة اللون في طبقة PSD. تحميل مقاطع الكود التالية ملف PSD، والوصول إلى فئة Filllayer وضبط اللون باستخدام خاصية FillLayer.FillSettings.

String dataDir = Utils.getDataDir(ColorFillLayer.class) + "PSD/";
String sourceFileName = dataDir + "ColorFillLayer.psd";
String exportPath = dataDir + "ColorFillLayer_output.psd";
try (PsdImage im = (PsdImage) Image.load(sourceFileName)) {
for (int i = 0; i < im.getLayers().length; i++) {
if (im.getLayers()[i] instanceof FillLayer) {
FillLayer fillLayer = (FillLayer) im.getLayers()[i];
if (fillLayer.getFillSettings().getFillType() != FillType.Color) {
throw new Exception("Wrong Fill Layer");
}
IColorFillSettings settings = (IColorFillSettings) fillLayer.getFillSettings();
settings.setColor(Color.getRed());
fillLayer.update();
im.save(exportPath);
break;
}
}
}

دعم طبقات التعبئة بملء التدرجات

يوضح هذا المقال استخدام ملء التدرجات لملء طبقة PSD. لقد عرضت واجهات برمجة التطبيقات في Aspose.PSD طرقًا فعالة وسهلة لتحقيق هذا الهدف. لقد قدمت Aspose.PSD فئتي GradientColorPoint وGradientTransparencyPoint لإضافة تأثير التدرجات إلى طبقة.

الخطوات التالية تُظهر كيفية ملء طبقة PSD بملء تدرجي:

  • قم بتحميل ملف PSD كصورة باستخدام طريقة الصناعة Load التي تم عرضها بواسطة Image class.
  • ضبط خصائص إعدادات كائن FillLayer.
  • إنشاء قائمة من ColorPoints بالألوان المطلوبة وموضع اللون.
  • إنشاء قائمة transparencyPoints بالشفافية المطلوبة وموضع نقطة الشفافية.
  • استدعاء طريقة FillLayer.Update.
  • حفظ النتائج.

الكود التالي يظهر لك كيفية إضافة ملء تدرجي لملء طبقة PSD.

String dataDir = Utils.getDataDir(GradientFillLayer.class) + "PSD/";
String sourceFileName = dataDir + "ComplexGradientFillLayer.psd";
String outputFile = dataDir + "ComplexGradientFillLayer_output.psd";
try (PsdImage image = (PsdImage) Image.load(sourceFileName)) {
for (int i = 0; i < image.getLayers().length; i++) {
if (image.getLayers()[i] instanceof FillLayer) {
FillLayer fillLayer = (FillLayer) image.getLayers()[i];
if (fillLayer.getFillSettings().getFillType() != FillType.Gradient) {
throw new Exception("Wrong Fill Layer");
}
IGradientFillSettings settings = (IGradientFillSettings) fillLayer.getFillSettings();
if (
Math.abs(settings.getAngle() - 45) > 0.25 ||
settings.getDither() != true ||
settings.getAlignWithLayer() != false ||
settings.getReverse() != false ||
Math.abs(settings.getHorizontalOffset() - (-39)) > 0.25 ||
Math.abs(settings.getVerticalOffset() - (-5)) > 0.25 ||
settings.getTransparencyPoints().length != 3 ||
settings.getColorPoints().length != 2 ||
Math.abs(100.0 - settings.getTransparencyPoints()[0].getOpacity()) > 0.25 ||
settings.getTransparencyPoints()[0].getLocation() != 0 ||
settings.getTransparencyPoints()[0].getMedianPointLocation() != 50 ||
settings.getColorPoints()[0].getColor() != Color.fromArgb(203, 64, 140) ||
settings.getColorPoints()[0].getLocation() != 0 ||
settings.getColorPoints()[0].getMedianPointLocation() != 50) {
throw new Exception("Gradient Fill was not read correctly");
}
settings.setAngle(0.0);
settings.setDither(false);
settings.setAlignWithLayer(true);
settings.setReverse(true);
settings.setHorizontalOffset(25);
settings.setVerticalOffset(-15);
List<IGradientColorPoint> colorPoints = new ArrayList<IGradientColorPoint>();
Collections.addAll(colorPoints, settings.getColorPoints());
List<IGradientTransparencyPoint> transparencyPoints = new ArrayList<IGradientTransparencyPoint>();
Collections.addAll(transparencyPoints, settings.getTransparencyPoints());
GradientColorPoint gr1 = new GradientColorPoint();
gr1.setColor(Color.getViolet());
gr1.setLocation(4096);
gr1.setMedianPointLocation(75);
colorPoints.add(gr1);
colorPoints.get(1).setLocation(3000);
GradientTransparencyPoint gr2 = new GradientTransparencyPoint();
gr2.setOpacity(80.0);
gr2.setLocation(4096);
gr2.setMedianPointLocation(25);
transparencyPoints.add(gr2);
transparencyPoints.get(2).setLocation(3000);
settings.setColorPoints(colorPoints.toArray(new IGradientColorPoint[0]));
settings.setTransparencyPoints(transparencyPoints.toArray(new IGradientTransparencyPoint[0]));
fillLayer.update();
image.save(outputFile, new PsdOptions(image));
break;
}
}
}

تأثير الحدود مع ملء اللون

يوضح هذا المقال كيفية عرض تأثير الحدود مع ملء اللون. يتم استخدام تأثير الحدود لإضافة حدود وخطوط إلى الطبقات والأشكال. يمكن استخدامه لإنشاء خطوط لون صلبة، تدرجات ملونة، وكذلك حدود نمطية.

الخطوات لعرض تأثير الحدود بملء اللون بسيطة كالتالي:

  • ضبط خاصية LoadEffectsResource.
  • قم بتحميل ملف PSD كصورة باستخدام طريقة الصناعة Load التي تم عرضها بواسطة Image class وتحديد PsdLoadOptions.
  • ضبط خصائص إعدادات ColorFillSetting.
  • حفظ النتائج.

الكود التالي يظهر لك كيفية عرض تأثير الحدود مع ملء اللون.

String dataDir = Utils.getDataDir(StrokeEffectWithColorFill.class) + "PSD/";
// Implement rendering of Stroke effect with Color Fill for export
String sourceFileName = dataDir + "StrokeComplex.psd";
String exportPath = dataDir + "StrokeComplexRendering.psd";
String exportPathPng = dataDir + "StrokeComplexRendering.png";
PsdLoadOptions loadOptions = new PsdLoadOptions();
loadOptions.setLoadEffectsResource(true);
try (PsdImage im = (PsdImage) Image.load(sourceFileName, loadOptions)) {
for (int i = 0; i < im.getLayers().length; i++) {
StrokeEffect effect = (StrokeEffect) im.getLayers()[i].getBlendingOptions().getEffects()[0];
ColorFillSettings settings = (ColorFillSettings) effect.getFillSettings();
settings.setColor(Color.getDeepPink());
}
// Save psd
im.save(exportPath, new PsdOptions());
PngOptions option = new PngOptions();
option.setColorType(PngColorType.TruecolorWithAlpha);
// Save png
im.save(exportPathPng, option);
}