Замена цвета в слоях 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); | |
} |
Добавление слоя коррекции уровней
Эта статья показывает, как итерироваться через каждый слой уровня и устанавлив