การสนับสนุน Fill Layers
การสนับสนุน Fill Layers ด้วยการเติมสี
บทความนี้สาธิตวิธีการเติมเลเยอร์ 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; | |
} | |
} | |
} |
การสนับสนุน Fill Layers ด้วยการเติมแบบ Gradient
บทความนี้สาธิตการใช้งานการเติมแบบ Gradient เพื่อเติม PSD layer Aspose.PSD APIs ประกาศเมทอดที่มีประสิทธิภาพและใช้ง่ายเพื่อบรรลุวัตถุประสงค์นี้ Aspose.PSD ได้เปิดเผยคลาส GradientColorPoint และ GradientTransparencyPoint เพื่อเพิ่มเอฟเฟกต์ Gradient เข้าไปในเลเยอร์
ขั้นตอนในการเติม PSD layer ด้วยการเติมแบบ Gradient ง่ายมากดังต่อไปนี้:
- โหลดไฟล์ PSD เป็นภาพโดยใช้เมทอด Load ที่เปิดเผยโดย Image class
- กำหนดค่าคุณสมบัติของออบเจกต์ FillLayer
- สร้างรายการ ColorPoints พร้อมกับสีที่ต้องการและตำแหน่งของสี
- สร้างรายการ transparencyPoints พร้อมกับความทึกทึนที่ต้องการและตำแหน่งของจุดความทึกทึน
- เรียกเมทอด FillLayer.Update
- บันทึกผลลัพธ์
โค้ดตัวอย่างด้านล่างแสดงวิธีการเพิ่ม Gradient fill เข้าไปในเลเยอร์ 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 ด้วยการเติมสี
บทความนี้สาธิตวิธีการสร้างเอฟเฟกต์ Stroke ด้วยการเติมสี การใช้เอฟเฟกต์ Stroke เพื่อเพิ่มเส้นและเส้นขอบเข้าไปในเลเยอร์และรูปทรง สามารถใช้สร้างเส้นสีทึบ, เฉดเทาสีสวยงาม, และขอบลวดลาม
ขั้นตอนในการสร้างเอฟเฟกต์ Stroke ด้วยการเติมสี ง่ายมากดังต่อไปนี้:
- กำหนดคุณสมบัติ LoadEffectsResource
- โหลดไฟล์ PSD เป็นภาพโดยใช้เมทอด Load ที่เปิดเผยโดย Image class และกำหนด PsdLoadOptions
- กำหนดค่าคุณสมบัติของ ColorFillSetting
- บันทึกผลลัพธ์
โค้ดตัวอย่างด้านล่างแสดงวิธีการสร้างเอฟเฟกต์ Stroke ด้วยการเติมสี
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); | |
} |