پشتیبانی از لایه‌های پر شده

پشتیبانی از لایه‌های پر شده با رنگ

این مقاله نشان می‌دهد چگونه می‌توان یک لایه 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 را نشان می‌دهد. API‌های Aspose.PSD روش‌های کارآمد و آسان را برای رسیدن به این هدف ارائه کرده‌اند. Aspose.PSD کلاس‌های GradientColorPoint و GradientTransparencyPoint را برای افزودن اثر افقی به یک لایه ارائه کرده است.

مراحل پر کردن لایه PSD با پر افقی به سادگی زیر هستند:

  • یک فایل PSD را به عنوان یک تصویر با استفاده از متد Load ارائه شده توسط کلاس Image بارگذاری کنید.
  • ویژگی‌های تنظیمات شی 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;
}
}
}

اثر ضربه با پر شدن رنگ

این مقاله نحوه اعمال اثر ضربه با پر کردن رنگ را نشان می‌دهد. اثر Stroke برای اضافه کردن ضربه‌ها و حاشیه‌ها به لایه‌ها و اشکال استفاده می‌شود. این می‌تواند برای ایجاد خطوط رنگی جامد، افقی رنگارنگ، و همچنین حاشیه‌های الگویی استفاده شود.

مراحل اعمال اثر ضربه با پر کردن رنگ به سادگی زیر هستند:

  • ویژگی LoadEffectsResource را تنظیم کنید.
  • یک فایل PSD را به عنوان یک تصویر با استفاده از متد Load ارائه شده توسط کلاس Image بارگذاری کنید و 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);
}