채우기 레이어 지원
색 채우기로 채우기 레이어 지원
이 문서에서는 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 레이어를 그라디언트로 채우는 단계는 다음과 같습니다:
- Image 클래스에 의해 노출된 factory 메소드 Load를 사용하여 이미지로 PSD 파일을 로드합니다.
- 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 속성 설정.
- Image 클래스에 의해 노출된 factory 메소드 Load를 사용하여 이미지로 PSD 파일을 로드하고 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); | |
| } |