Renk Katmanlarının Desteği
Renk Doldurmalı Katmanların Desteği
Bu makale, PSD katmanını Renk ile doldurmanın nasıl yapılacağını göstermektedir. Lütfen Renk katmanı eklemek için Aspose.PSD.FileFormats.Psd.Layers.FillLayer’ı kullanın. Aşağıdaki kod parçaları bir PSD dosyası yükler, FillLayer sınıfına erişir ve rengi FillLayer.FillSettings özelliğini kullanarak ayarlar.
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; | |
} | |
} | |
} |
Renk Geçişli Doldurmaların Desteği
Bu makale, PSD katmanını doldurmak için Renk geçişini kullanmanın nasıl yapıldığını göstermektedir. Aspose.PSD API’leri, bu hedefe ulaşmak için verimli ve kullanımı kolay yöntemler sunmaktadır. Aspose.PSD, GradientColorPoint ve GradientTransparencyPoint sınıflarını bir katmana Gradient efekti eklemek için açıklamıştır.
PSD katmanını Gradient doldurmak için adımlar aşağıdaki gibidir:
- Resim sınıfı tarafından sağlanan fabrika yöntemi Load kullanarak bir PSD dosyasını yükleyin.
- FillLayer nesnesinin ayarlar özelliklerini ayarlayın.
- Gerekli renkleri ve renk konumunu içeren bir ColorPoint’ler listesi oluşturun.
- Gerekli opaklık ve opaklık noktası konumunu içeren bir transparencyPoints listesi oluşturun.
- FillLayer.Update yöntemini çağırın.
- Sonuçları kaydedin.
Aşağıdaki kod parçacığı, PSD katmanına Gradient doldurma eklemeyi nasıl yapacağınızı gösterir.
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; | |
} | |
} | |
} |
Renk Dolumu ile Çizgi Efekti
Bu makale, renk dolumu ile çizgi efektinin nasıl yapılacağını göstermektedir. Stroke efekti, katmanlara ve şekillere vuruşlar ve sınırlar eklemek için kullanılır. Tek renkli çizgiler, renkli geçişler ve desenli sınırlar oluşturmak için kullanılabilir.
Renk dolumu ile Stroke efekti oluşturmanın adımları aşağıdaki gibidir:
- LoadEffectsResource özelliğini ayarlayın.
- PsdLoadOptions’i tanımlayarak, Image sınıfı tarafından sağlanan Load fabrika yöntemini kullanarak bir PSD dosyasını yükleyin.
- ColorFillSetting özelliklerini ayarlayın.
- Sonuçları kaydedin.
Aşağıdaki kod parçacığı, renk dolumu ile Stroke efektini nasıl oluşturacağınızı gösterir.
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); | |
} |