Podpora vrstev vyplňování
Podpora vrstev vyplňování barvou
Tento článek ukazuje, jak vyplnit vrstvu PSD barvou. Použijte třídu Aspose.PSD.FileFormats.Psd.Layers.FillLayer pro přidání barvy do vrstvy PSD. Následující ukázky kódu načtou soubor PSD, přistoupí k třídě Filllayer a nastaví barvu pomocí vlastnosti 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; | |
} | |
} | |
} |
Podpora vrstev vyplňování přechodem
Tento článek ukazuje použití přechodové výplně k vyplnění vrstvy PSD. Aspose.PSD API nabízí efektivní a snadno použitelné metody k dosažení tohoto cíle. Aspose.PSD zpřístupnil třídy GradientColorPoint a GradientTransparencyPoint pro přidání přechodového efektu do vrstvy.
Kroky k vyplnění vrstvy PSD pomocí přechodové výplně jsou následující:
- Načtěte soubor PSD jako obrázek pomocí metody Load, kterou poskytuje třída Image.
- Nastavte vlastnosti nastavení objektu FillLayer.
- Vytvořte seznam ColorPoints s požadovanými barvami a pozicí barvy.
- Vytvořte seznam transparencyPoints s požadovanou průhledností a pozicí průhlednostního bodu.
- Zavolejte metodu FillLayer.Update.
- Uložte výsledky.
Následující ukázka kódu vám ukazuje, jak přidat přechodovou výplň k vyplnění vrstvy 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; | |
} | |
} | |
} |
Efekt obrysu s vyplněním barvou
Tento článek ukazuje, jak vykreslit efekt obrysu s vyplněním barvou. Efekt obrysu se používá k přidání čar a ohraničení vrstev a tvarů. Může být použit k vytváření linií jedné barvy, pestrých přechodů a vzorovaných ohraničení.
Kroky k vykreslení efektu obrysu s vyplněním barvou jsou následující:
- Nastavte vlastnost LoadEffectsResource.
- Načtěte soubor PSD jako obrázek pomocí metody Load, kterou poskytuje třída Image a definujte PsdLoadOptions.
- Nastavte vlastnosti nastavení ColorFillSetting.
- Uložte výsledky.
Následující ukázka kódu vám ukazuje, jak vykreslit efekt obrysu s vyplněním barvou.
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); | |
} |