Suporte de Camadas de Preenchimento

Suporte de Camadas de Preenchimento com Cor de Preenchimento

Este artigo demonstra como preencher uma camada de PSD com Cor. Por favor, utilize a classe Aspose.PSD.FileFormats.Psd.Layers.FillLayer para adicionar Cor na camada de PSD. Os trechos de código a seguir carregam um arquivo PSD, acessam a classe FillLayer e definem a cor usando a propriedade 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;
}
}
}

Suporte de Camadas de Preenchimento com Preenchimento de Degradê

Este artigo demonstra o uso de preenchimento de degradê para preencher uma camada de PSD. As APIs Aspose.PSD expuseram métodos eficientes e fáceis de usar para alcançar esse objetivo. Aspose.PSD expôs as classes GradientColorPoint e GradientTransparencyPoint para adicionar o efeito de degradê em uma camada.

Os passos para preencher uma camada de PSD com preenchimento de degradê são simples como abaixo:

  • Carregar um arquivo PSD como uma imagem usando o método de fábrica Load exposto pela classe Image.
  • Definir propriedades de configurações do objeto FillLayer.
  • Criar lista de ColorPoints com as cores requeridas e a posição da cor.
  • Criar lista de transparencyPoints com a opacidade requerida e a posição do ponto de transparência.
  • Chamar o método FillLayer.Update
  • Salvar os resultados.

O trecho de código a seguir mostra como adicionar preenchimento de degradê para preencher uma camada de 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;
}
}
}

Efeito de Traçado com Preenchimento de Cor

Este artigo demonstra como renderizar o efeito de traçado com preenchimento de cor. O efeito de traçado é usado para adicionar traços e bordas a camadas e formas. Ele pode ser usado para criar linhas de cor sólida, degradês coloridos, bem como bordas padronizadas.

Os passos para renderizar o efeito de traçado com preenchimento de cor são simples como abaixo:

  • Definir a propriedade LoadEffectsResource.
  • Carregar um arquivo PSD como uma imagem usando o método de fábrica Load exposto pela classe Image e definir PsdLoadOptions.
  • Definir propriedades de configurações de ColorFillSetting.
  • Salvar os resultados.

O trecho de código a seguir mostra como renderizar o efeito de traçado com preenchimento de cor.

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);
}