Підтримка заповнювальних шарів

Підтримка заповнювальних шарів з кольоровим заповненням

Ця стаття демонструє, як заповнювати шар 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 API надає ефективні та прості у використанні методи для досягнення цієї мети. Aspose.PSD використовує класи GradientColorPoint та GradientTransparencyPoint, щоб додати градієнтний ефект в шар.

Кроки для заповнення шару PSD градієнтним заповненням настільки прості, як показано нижче:

  • Завантажте файл PSD як зображення, використовуючи метод завантаження, доступний у класі Image.
  • Встановіть властивості налаштувань об’єкту FillLayer.
  • Створіть список ColorPoints з необхідними кольорами та позицією кольору.
  • Створіть список точок прозорості з необхідною непрозорістю та позицією точки прозорості.
  • Викличте метод 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 як зображення, використовуючи метод завантаження, доступний у класі 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);
}