תמיכה בשכבות מילוי
תמיכה בשכבות מילוי עם מילוי צבע
מאמר זה מדגים איך למלא שכבת 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 חשפו שיטות יעילות וקלות לשימוש כדי להגיע למטרה זו. ב-Aspose.PSD חשפו מחלקות GradientColorPoint ו-GradientTransparencyPoint כדי להוסיף אפקט תעמעום לשכבה.
השלבים למילוי שכבת PSD עם מילוי התעמעום הם פשוטים כמטה:
- טען קובץ PSD כתמונה באמצעות שיטת הפעלה Load החשופה על ידי Image class.
- הגדר מאפייני הגדרות של אובייקט FillLayer.
- צור רשימת ColorPoints עם צבעים נדרשים ומיקום של הצבע.
- צור רשימת transparencyPoints עם שקיפות נדרשת ומיקום של נקודת השקיפות.
- קרא לשיטת 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 כתמונה באמצעות שיטת הפעלה Load החשופה על ידי Image class והגדר 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); | |
} |