色埋めレイヤーの色でのサポート

この記事では、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レイヤーにグラデーション色を追加する方法を示しています。

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

色でのストローク効果

この記事では、色でストローク効果をレンダリングする方法を示しています。ストローク効果は、レイヤーや図形にストロークやボーダーを追加するために使用されます。単色の線、カラフルなグラデーション、およびパターン化されたボーダーを作成するために使用することができます。

色でストローク効果をレンダリングする手順は以下のとおりです:

以下のコードスニペットは、色でストローク効果をレンダリングする方法を示しています。

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