Замена цвета в слоях PSD

Aspose.PSD для Java позволяет изменять фоновый цвет каждого слоя файла PSD. Используйте класс Aspose.PSD.FileFormats.Psd.Layers.BackgroundColor для изменения фонового цвета слоя в PSD слое. В следующем кодовом отрывке загружается файл PSD, обращается к слою, обновляется цвет фона и сохраняется файл PSD.

String dataDir = Utils.getDataDir(ColorReplacementInPSD.class) + "PSD/";
// Load a PSD file as an image and caste it into PsdImage
try (PsdImage image = (PsdImage) Image.load(dataDir + "sample.psd")) {
for (int i = 0; i < image.getLayers().length; i++) {
if (image.getLayers()[i].getName() == "Rectangle 1") {
Layer layer = image.getLayers()[i];
int dd = 0;
layer.hasBackgroundColor();
layer.setBackgroundColor(Color.getOrange());
}
}
image.save(dataDir + "asposeImage02.psd");
}

Обновление текстового слоя в файле PSD

Aspose.PSD для Java позволяет манипулировать текстом в текстовом слое файла PSD. Используйте класс Aspose.PSD.FileFormats.Psd.Layers.TextLayer для обновления текста в слое PSD. В следующем кодовом отрывке загружается файл PSD, обращается к текстовому слою, обновляется текст и сохраняется файл PSD с новым именем, используя метод Aspose.PSD.FileFormats.Psd.Layers.TextLayer.UpdateText.

String dataDir = Utils.getDataDir(UpdateTextLayerInPSDFile.class) + "PSD/";
// Load a PSD file as an image and cast it into PsdImage
try (PsdImage psdImage = (PsdImage) Image.load(dataDir + "layers.psd")) {
for (int i = 0; i < psdImage.getLayers().length; i++) {
if (psdImage.getLayers()[i] instanceof TextLayer) {
TextLayer textLayer = (TextLayer) psdImage.getLayers()[i];
textLayer.updateText("test update", new Point(0, 0), 15.0f, Color.getPurple());
}
}
psdImage.save(dataDir + "UpdateTextLayerInPSDFile_out.psd");
}

Обнаружение смещенного PSD

Aspose.PSD для Java позволяет определить, является ли данный файл PSD смещенным или нет. Свойство IsFlatten было введено в классе Aspose.PSD.FileFormats.Psd.PsdImage для достижения этой функциональности. В следующем кодовом отрывке загружается файл PSD и обращается к свойству IsFlatten.

String dataDir = Utils.getDataDir(DetectFlattenedPSD.class) + "PSD/";
// Load a PSD file as an image and cast it into PsdImage
try (PsdImage psdImage = (PsdImage) Image.load(dataDir + "layers.psd")) {
// Do processing, Get the true value if PSD is flatten and false in case the PSD is not flatten.
System.out.println(psdImage.isFlatten());
}

Слияние слоев PSD

В этой статье показано, как объединить слои в файле PSD при преобразовании файла PSD в JPG с помощью Aspose.PSD. В приведенном ниже примере существующий файл PSD загружается путем передачи пути к файлу в статический метод Load класса Image. После загрузки преобразуйте/приведите изображение к PsdImage. Создайте экземпляр класса JpegOptions и установите его различные свойства. Теперь вызовите метод Save экземпляра PsdImage. В следующем кодовом отрывке показано, как объединить слои PSD.

String dataDir = Utils.getDataDir(MergePSDLayers.class) + "PSD/";
// Load a PSD file as an image and cast it into PsdImage
try (PsdImage psdImage = (PsdImage) Image.load(dataDir + "layers.psd")) {
// Create JPEG option class object, Set its properties and save image
JpegOptions jpgOptions = new JpegOptions();
psdImage.save(dataDir + "MergePSDlayers_output.jpg", jpgOptions);
}

Поддержка оттенков серого с альфа-каналом для PSD

В этой статье показано, как поддерживать оттенки серого с альфа-каналом для файла PSD при преобразовании файла PSD в PNG с помощью Aspose.PSD. В приведенном ниже примере существующий файл PSD загружается путем передачи пути к файлу в статический метод Load класса Image. После загрузки преобразуйте/приведите изображение к PsdImage. Создайте экземпляр класса PngOptions и установите его различные свойства. Установите свойство ColorType на TruecolorWithAlpha. Теперь вызовите метод Save экземпляра PngOptions. В следующем кодовом отрывке показано, как конвертировать в оттенки серого PNG с альфа-каналом.

String dataDir = Utils.getDataDir(GrayScaleSupportForAlpha.class) + "PSD/";
// Load a PSD file as an image and cast it into PsdImage
try (PsdImage psdImage = (PsdImage) Image.load(dataDir + "sample.psd")) {
// Create an instance of PngOptions class
PngOptions pngOptions = new PngOptions();
pngOptions.setColorType(PngColorType.TruecolorWithAlpha);
psdImage.save(dataDir + "GrayScaleSupportForAlpha_out.png", pngOptions);
}

Поддержка эффектов слоя для PSD

В этой статье показано, как поддерживать различные эффекты, такие как Размытие, Внутренняя свечка, Внешняя свечка для слоя PSD. В следующем кодовом отрывке показано, как поддерживать эффекты слоя.

String dataDir = Utils.getDataDir(SupportLayerForPSD.class) + "PSD/";
String sourceFileName = dataDir + "layers.psd";
String output = dataDir + "layers.png";
PsdLoadOptions imageLoadOptions = new PsdLoadOptions();
imageLoadOptions.setLoadEffectsResource(true);
imageLoadOptions.setUseDiskForLoadEffectsResource(true);
try (PsdImage image = (PsdImage) Image.load(sourceFileName, imageLoadOptions)) {
PngOptions saveOptions = new PngOptions();
saveOptions.setColorType(PngColorType.TruecolorWithAlpha);
image.save(output, saveOptions);
}

Поддержка даты и времени создания слоя

В этой статье показано, как поддерживать дату и время создания слоя для слоя PSD. В следующем кодовом отрывке показано, как создавать слои.

String dataDir = Utils.getDataDir(LayerCreationDateTime.class) + "PSD/";
String sourceName = dataDir + "OneLayer.psd";
// Load a PSD file as an image and cast it into PsdImage
try (PsdImage im = (PsdImage) Image.load(sourceName)) {
Layer layer = im.getLayers()[0];
Date creationDateTime = layer.getLayerCreationDateTime();
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date expectedDateTime = new Date("2018/7/17 8:57:24");
Assert.areEqual(expectedDateTime, creationDateTime);
Date now = new Date();
Layer createdLayer = im.addLevelsAdjustmentLayer();
}

Поддержка выделения цветом листа

В этой статье показано, как загружать изображения PSD, изменять и выделять цвета листа и сохранять их в качестве изображения. Приведен фрагмент кода.

String dataDir = Utils.getDataDir(SheetColorHighlighting.class) + "PSD/";
String sourceFileName = dataDir + "SheetColorHighlightExample.psd";
String exportPath = dataDir + "SheetColorHighlightExampleChanged.psd";
// Load a PSD file as an image and cast it into PsdImage
try (PsdImage im = (PsdImage) Image.load(sourceFileName)) {
Layer layer1 = im.getLayers()[0];
Assert.areEqual(SheetColorHighlightEnum.Violet, layer1.getSheetColorHighlight());
Layer layer2 = im.getLayers()[1];
Assert.areEqual(SheetColorHighlightEnum.Orange, layer2.getSheetColorHighlight());
layer1.setSheetColorHighlight(SheetColorHighlightEnum.Yellow);
im.save(exportPath);
}

Поддержка текстовых слоев на этапе выполнения

В этой статье показано, как добавлять текстовые слои на этапе выполнения для изображений PSD. Приведен фрагмент кода ниже.

String dataDir = Utils.getDataDir(AddEffectAtRunTime.class) + "DrawingAndFormattingImages/";
String sourceFileName = dataDir + "ThreeRegularLayers.psd";
String exportPath = dataDir + "ThreeRegularLayersChanged.psd";
PsdLoadOptions loadOptions = new PsdLoadOptions();
loadOptions.setLoadEffectsResource(true);
try (PsdImage im = (PsdImage) Image.load(sourceFileName, loadOptions)) {
ColorOverlayEffect effect = im.getLayers()[1].getBlendingOptions().addColorOverlay();
effect.setColor(Color.getGreen());
effect.setOpacity((byte) 128);
effect.setBlendMode(BlendMode.Normal);
im.save(exportPath);
}

Поддержка слоев настройки

В этой статье показано, как настраивать слои и затем, если слой пустой, сливать слои и сохранять как изображения PSD. Приведен фрагмент кода ниже.

String dataDir = Utils.getDataDir(SupportOfAdjusmentLayers.class) + "PSD/";
// Channel Mixer Adjustment Layer
String sourceFileName1 = dataDir + "ChannelMixerAdjustmentLayer.psd";
String exportPath1 = dataDir + "ChannelMixerAdjustmentLayerChanged.psd";
try (PsdImage im = (PsdImage) Image.load(sourceFileName1)) {
for (int i = 0; i < im.getLayers().length; i++) {
if (im.getLayers()[i] instanceof AdjustmentLayer) {
AdjustmentLayer adjustmentLayer = (AdjustmentLayer) im.getLayers()[i];
if (adjustmentLayer != null) {
adjustmentLayer.mergeLayerTo(im.getLayers()[0]);
}
}
}
// Save PSD
im.save(exportPath1);
}
// Levels adjustment layer
String sourceFileName2 = dataDir + "LevelsAdjustmentLayerRgb.psd";
String exportPath2 = dataDir + "LevelsAdjustmentLayerRgbChanged.psd";
try (PsdImage img = (PsdImage) Image.load(sourceFileName2)) {
for (int i = 0; i < img.getLayers().length; i++) {
if (img.getLayers()[i] instanceof AdjustmentLayer) {
AdjustmentLayer adjustmentLayer = (AdjustmentLayer) img.getLayers()[i];
if (adjustmentLayer != null) {
adjustmentLayer.mergeLayerTo(img.getLayers()[0]);
}
}
}
// Save PSD
img.save(exportPath2);
}

Управление яркостью и контрастом в слоях настройки

В этой статье показано, как перебирать слои и управлять яркостью и контрастом в слоях, а затем сохранять как изображения PSD. Приведен фрагмент кода ниже.

String dataDir = Utils.getDataDir(ManageBrightnessContrastAdjustmentLayer.class) + "PSD/";
// Brightness/Contrast layer editing
String sourceFileName = dataDir + "BrightnessContrastModern.psd";
String psdPathAfterChange = dataDir + "BrightnessContrastModernChanged.psd";
try (PsdImage im = (PsdImage) Image.load(sourceFileName)) {
for (int i = 0; i < im.getLayers().length; i++) {
if (im.getLayers()[i] instanceof BrightnessContrastLayer) {
BrightnessContrastLayer brightnessContrastLayer = (BrightnessContrastLayer) im.getLayers()[i];
brightnessContrastLayer.setBrightness(50);
brightnessContrastLayer.setContrast(50);
}
}
// Save PSD
im.save(psdPathAfterChange);
}

Управление слоями экспозиции

В этой статье показано, как добавлять и редактировать слои экспозиции и управлять ими, а затем сохранять как изображения PSD. Приведен фрагмент кода ниже.

String dataDir = Utils.getDataDir(ManageExposureAdjustmentLayer.class) + "PSD/";
// Exposure layer editing
String sourceFileName = dataDir + "ExposureAdjustmentLayer.psd";
String psdPathAfterChange = dataDir + "ExposureAdjustmentLayerChanged.psd";
try (PsdImage im = (PsdImage) Image.load(sourceFileName)) {
for (int i = 0; i < im.getLayers().length; i++) {
if (im.getLayers()[i] instanceof ExposureLayer) {
ExposureLayer expLayer = (ExposureLayer) im.getLayers()[i];
expLayer.setExposure(2);
expLayer.setOffset(-0.25f);
expLayer.setGammaCorrection(0.5f);
}
}
im.save(psdPathAfterChange);
}
// Exposure layer adding
sourceFileName = dataDir + "PhotoExample.psd";
psdPathAfterChange = dataDir + "PhotoExampleAddedExposure.psd";
try (PsdImage img = (PsdImage) Image.load(sourceFileName)) {
ExposureLayer newlayer = img.addExposureAdjustmentLayer(10, -0.25f, 2f);
img.save(psdPathAfterChange);
}

Управление слоями смешивания каналов

В этой статье показано, как управлять слоями настройки и устанавливать разные цвета, а затем сохранять как изображения PSD. Приведен фрагмент кода ниже.

String dataDir = Utils.getDataDir(ManageChannelMixerAdjusmentLayer.class) + "PSD/";
// Rgb Channel Mixer
String sourceFileName = dataDir + "ChannelMixerAdjustmentLayerRgb.psd";
String psdPathAfterChange = dataDir + "ChannelMixerAdjustmentLayerRgbChanged.psd";
try (PsdImage im = (PsdImage) Image.load(sourceFileName)) {
for (int i = 0; i < im.getLayers().length; i++) {
if (im.getLayers()[i] instanceof RgbChannelMixerLayer) {
RgbChannelMixerLayer rgbLayer = (RgbChannelMixerLayer) im.getLayers()[i];
rgbLayer.getRedChannel().setBlue((short) 100);
rgbLayer.getBlueChannel().setGreen((short) -100);
rgbLayer.getGreenChannel().setConstant((short) 50);
}
}
im.save(psdPathAfterChange);
}
// Adding the new layer(Cmyk for this example)
sourceFileName = dataDir + "CmykWithAlpha.psd";
psdPathAfterChange = dataDir + "ChannelMixerAdjustmentLayerCmykChanged.psd";
try (PsdImage img = (PsdImage) Image.load(sourceFileName)) {
ChannelMixerLayer newlayer = img.addChannelMixerAdjustmentLayer();
newlayer.getChannelByIndex(2).setConstant((short) 50);
newlayer.getChannelByIndex(0).setConstant((short) 50);
img.save(psdPathAfterChange);
}

Слияние слоев PSD c другими слоями

В этой статье показано, как объединить слои в другие слои в файле PSD с помощью Aspose.PSD. В приведенном ниже примере существующий файл PSD загружается путем передачи пути к файлу в статический метод Load класса Image. Теперь вызовите метод Save экземпляра PsdImage. Приведен фрагмент кода, показывающий, как объединить слои PSD.

String dataDir = Utils.getDataDir(MergeOnePSDlayerToOther.class) + "PSD/";
String sourceFile1 = dataDir + "FillOpacitySample.psd";
String sourceFile2 = dataDir + "ThreeRegularLayersSemiTransparent.psd";
String exportPath = dataDir + "MergedLayersFromTwoDifferentPsd.psd";
try (PsdImage im1 = (PsdImage) Image.load(sourceFile1);
PsdImage im2 = (PsdImage) Image.load(sourceFile2)) {
Layer layer1 = im1.getLayers()[1];
Layer layer2 = im2.getLayers()[0];
layer1.mergeLayerTo(layer2);
im2.save(exportPath);
}

Поддержка рамки текста

В этой статье показано, как поддерживать рамку текста в файле PSD с помощью Aspose.PSD. В приведенном ниже примере существующий файл PSD загружается путем передачи пути к файлу в статический метод Load класса Image. TextBoundBox - это максимальный размер слоя для текстового слоя. Теперь вызовите метод Save экземпляра PsdImage. Приведен фрагмент кода, показывающий, как объединить слои PSD.

String dataDir = Utils.getDataDir(TextLayerBoundBox.class) + "PSD/";
String sourceFileName = dataDir + "LayerWithText.psd";
Size correctOpticalSize = new Size(127, 45);
Size correctBoundBox = new Size(172, 62);
try (PsdImage im = (PsdImage) Image.load(sourceFileName)) {
TextLayer textLayer = (TextLayer) im.getLayers()[1];
// Size of the layer is the size of the rendered area
Size opticalSize = textLayer.getSize();
Assert.areEqual(correctOpticalSize, opticalSize);
// TextBoundBox is the maximum layer size for Text Layer.
// In this area PS will try to fit your text
Size boundBox = textLayer.getTextBoundBox();
Assert.areEqual(correctBoundBox, boundBox);
}

Поддержка ресурсов IOPA

В этой статье показано, как поддерживать ресурс IOPA в файле PSD с помощью Aspose.PSD. Приведен фрагмент кода, показывающий, как поддерживать IOPA в слоях PSD.

String dataDir = Utils.getDataDir(AddIopaResource.class) + "PSD/";
String sourceFileName = dataDir + "FillOpacitySample.psd";
String exportPath = dataDir + "FillOpacitySampleChanged.psd";
try (PsdImage im = (PsdImage) (Image.load(sourceFileName))) {
Layer layer = im.getLayers()[2];
LayerResource[] resources = layer.getResources();
for (int i = 0; i < resources.length; i++) {
if (resources[i] instanceof IopaResource) {
IopaResource iopaResource = (IopaResource) resources[i];
iopaResource.setFillOpacity((byte) 200);
}
}
im.save(exportPath);
}

Управление непрозрачностью слоев

В этой статье показано, как управлять непрозрачностью слоев в файле PSD с помощью Aspose.PSD. Приведен фрагмент кода ниже.

String dataDir = Utils.getDataDir(FillOpacityOfLayers.class) + "PSD/";
// Change the Fill Opacity property
String sourceFileName = dataDir + "FillOpacitySample.psd";
String exportPath = dataDir + "FillOpacitySampleChanged.psd";
try (PsdImage im = (PsdImage) (Image.load(sourceFileName))) {
Layer layer = im.getLayers()[2];
layer.setFillOpacity(5);
im.save(exportPath);
}

Отрисовка слоев коррекции кривых

В этой статье показано, как отрисовывать коррекцию кривых слоев в файле PSD и рендерить их в PNG с помощью Aspose.PSD. Приведен фрагмент кода ниже.

String dataDir = Utils.getDataDir(RenderingOfCurvesAdjustmentLayer.class) + "PSD/";
// Curves layer editing
String sourceFileName = dataDir + "CurvesAdjustmentLayer";
String psdPathAfterChange = dataDir + "CurvesAdjustmentLayerChanged";
String pngExportPath = dataDir + "CurvesAdjustmentLayerChanged";
for (int j = 1; j < 2; j++) {
try (PsdImage im = (PsdImage) Image.load(sourceFileName + Integer.toString(j) + ".psd")) {
for (int i = 0; i < im.getLayers().length; i++) {
if (im.getLayers()[i] instanceof CurvesLayer) {
CurvesLayer curvesLayer = (CurvesLayer) im.getLayers()[i];
if (curvesLayer.isDiscreteManagerUsed()) {
CurvesDiscreteManager manager = (CurvesDiscreteManager) curvesLayer.getCurvesManager();
for (int k = 10; k < 50; k++) {
manager.setValueInPosition(0, (byte) k, (byte) (15 + (k * 2)));
}
} else {
CurvesContinuousManager manager = (CurvesContinuousManager) curvesLayer.getCurvesManager();
manager.addCurvePoint((byte) 0, (byte) 50, (byte) 100);
manager.addCurvePoint((byte) 0, (byte) 150, (byte) 130);
}
}
}
// Save PSD
im.save(psdPathAfterChange + Integer.toString(j) + ".psd");
// Save PNG
PngOptions saveOptions = new PngOptions();
saveOptions.setColorType(PngColorType.TruecolorWithAlpha);
im.save(pngExportPath + Integer.toString(j) + ".png", saveOptions);
}
}

Добавление слоев коррекции кривых

В этой статье показано, как добавлять слои коррекции кривых в файл PSD с помощью Aspose.PSD. Приведен фрагмент кода ниже.

String dataDir = Utils.getDataDir(AddCurvesAdjustmentLayer.class) + "PSD/";
// Curves layer editing
String sourceFileName = dataDir + "CurvesAdjustmentLayer";
String psdPathAfterChange = dataDir + "CurvesAdjustmentLayerChanged";
for (int j = 1; j < 2; j++) {
String fileName = sourceFileName + ".psd";
try (PsdImage im = (PsdImage) Image.load(fileName)) {
for (int k = 0; k < im.getLayers().length; k++) {
if (im.getLayers()[k] instanceof CurvesLayer) {
CurvesLayer curvesLayer = (CurvesLayer) im.getLayers()[k];
if (curvesLayer.isDiscreteManagerUsed()) {
CurvesDiscreteManager manager = (CurvesDiscreteManager) curvesLayer.getCurvesManager();
for (int i = 10; i < 50; i++) {
manager.setValueInPosition(0, (byte) i, (byte) (15 + (i * 2)));
}
} else {
CurvesContinuousManager manager = (CurvesContinuousManager) curvesLayer.getCurvesManager();
manager.addCurvePoint((byte) 0, (byte) 50, (byte) 100);
manager.addCurvePoint((byte) 0, (byte) 150, (byte) 130);
}
}
}
// Save PSD
im.save(psdPathAfterChange + Integer.toString(j) + ".psd");
}

Управление слоем коррекции фильтра фотографии

В этой статье показано, как итерироваться через каждый слой фотофильтра и добавлять, редактировать и сохранять их как файл PSD с помощью Aspose.PSD. Приведен фрагмент кода ниже.

String dataDir = Utils.getDataDir(ManagePhotoFilterAdjustmentLayer.class) + "PSD/";
// Photo Filter layer editing
String sourceFileName = dataDir + "PhotoFilterAdjustmentLayer.psd";
String psdPathAfterChange = dataDir + "PhotoFilterAdjustmentLayerChanged.psd";
try (PsdImage im = (PsdImage) Image.load(sourceFileName)) {
for (int i = 0; i < im.getLayers().length; i++) {
if (im.getLayers()[i] instanceof PhotoFilterLayer) {
PhotoFilterLayer photoLayer = (PhotoFilterLayer) im.getLayers()[i];
photoLayer.setColor(Color.fromArgb(255, 60, 60));
photoLayer.setDensity(78);
photoLayer.setPreserveLuminosity(false);
}
}
im.save(psdPathAfterChange);
}
// Photo Filter layer adding
sourceFileName = dataDir + "PhotoExample.psd";
psdPathAfterChange = dataDir + "PhotoExampleAddedPhotoFilter.psd";
try (PsdImage img = (PsdImage) Image.load(sourceFileName)) {
PhotoFilterLayer layer = img.addPhotoFilterLayer(Color.fromArgb(25, 255, 35));
img.save(psdPathAfterChange);
}

Поддержка слияния слоев

Эта статья показывает, как объединить весь файл PSD и сливать один слой в другой, сохраняя их как файл PSD с помощью Aspose.PSD. Приведен фрагмент кода ниже.

String dataDir = Utils.getDataDir(PossibilityToFlattenLayers.class) + "PSD/";
// Flatten whole PSD
String sourceFileName = dataDir + "ThreeRegularLayersSemiTransparent.psd";
String exportPath = dataDir + "ThreeRegularLayersSemiTransparentFlattened.psd";
try (PsdImage im = (PsdImage) Image.load(sourceFileName)) {
im.flattenImage();
im.save(exportPath);
}
// Merge one layer in another
exportPath = dataDir + "ThreeRegularLayersSemiTransparentFlattenedLayerByLayer.psd";
try (PsdImage img = (PsdImage) Image.load(sourceFileName)) {
Layer bottomLayer = img.getLayers()[0];
Layer middleLayer = img.getLayers()[1];
Layer topLayer = img.getLayers()[2];
Layer layer1 = img.mergeLayers(bottomLayer, middleLayer);
Layer layer2 = img.mergeLayers(layer1, topLayer);
// Set up merged layers
img.setLayers(new Layer[]{layer2});
img.save(exportPath);
}

Добавление и рендеринг слоев уровня

В этой статье показано, как итерироваться через каждый слой уровня и устанавливать различные уровни, а затем сохранять их как файл PSD и PNG с помощью Aspose.PSD. Приведен фрагмент кода ниже.

String dataDir = Utils.getDataDir(RenderingOfLevelAdjustmentLayer.class) + "PSD/";
String sourceFileName = dataDir + "LevelsAdjustmentLayer.psd";
String psdPathAfterChange = dataDir + "LevelsAdjustmentLayerChanged.psd";
String pngExportPath = dataDir + "LevelsAdjustmentLayerChanged.png";
try (PsdImage im = (PsdImage) Image.load(sourceFileName)) {
for (int i = 0; i < im.getLayers().length; i++) {
if (im.getLayers()[i] instanceof LevelsLayer) {
LevelsLayer levelsLayer = (LevelsLayer) im.getLayers()[i];
LevelChannel channel = levelsLayer.getChannel(0);
channel.setInputMidtoneLevel(2.0f);
channel.setInputShadowLevel((short) 10);
channel.setInputHighlightLevel((short) 230);
channel.setOutputShadowLevel((short) 20);
channel.setOutputHighlightLevel((short) 200);
}
}
// Save PSD
im.save(psdPathAfterChange);
// Save PNG
PngOptions saveOptions = new PngOptions();
saveOptions.setColorType(PngColorType.TruecolorWithAlpha);
im.save(pngExportPath, saveOptions);
}

Добавление слоя коррекции оттенка

Эта статья показывает, как итерироваться через каждый слой оттенка и задавать различные диапазоны и цвета, а затем сохранять их как файл PSD с помощью Aspose.PSD. Приведен фрагмент кода ниже.

String dataDir = Utils.getDataDir(AddHueSaturationAdjustmentLayer.class) + "PSD/";
// Hue/Saturation layer editing
String sourceFileName = dataDir + "HueSaturationAdjustmentLayer.psd";
String psdPathAfterChange = dataDir + "HueSaturationAdjustmentLayerChanged.psd";
try (PsdImage im = (PsdImage) Image.load(sourceFileName)) {
for (int i = 0; i < im.getLayers().length; i++) {
if (im.getLayers()[i] instanceof HueSaturationLayer) {
HueSaturationLayer hueLayer = (HueSaturationLayer) im.getLayers()[i];
hueLayer.setHue((short) -25);
hueLayer.setSaturation((short) -12);
hueLayer.setLightness((short) 67);
ColorRangeHsl colorRange = hueLayer.getRange(2);
colorRange.setHue((short) -40);
colorRange.setSaturation((short) 50);
colorRange.setLightness((short) -20);
colorRange.setMostLeftBorder((short) 300);
}
}
im.save(psdPathAfterChange);
}
// Hue/Saturation layer adding
sourceFileName = dataDir + "PhotoExample.psd";
psdPathAfterChange = dataDir + "PhotoExampleAddedHueSaturation.psd";
try (PsdImage img = (PsdImage) Image.load(sourceFileName)) {
//this.SaveForVisualTest(im, this.OutputPath, prefix + file, "before");
HueSaturationLayer hueLayer = img.addHueSaturationAdjustmentLayer();
hueLayer.setHue((short) -25);
hueLayer.setSaturation((short) -12);
hueLayer.setLightness((short) 67);
ColorRangeHsl colorRange = hueLayer.getRange(2);
colorRange.setHue((short) -160);
colorRange.setSaturation((short) 100);
colorRange.setLightness((short) 20);
colorRange.setMostLeftBorder((short) 300);
img.save(psdPathAfterChange);
}

Добавление слоя коррекции уровней

Эта статья показывает, как итерироваться через каждый слой уровня и устанавлив