Редагування форматів Photoshop

Заміна кольору в шарах 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 іншими шарами

У цій статті показано, як об’єднувати шари з іншими шарами в файлі 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");
}

Керування шаром підлаштування каналу змішувача

У цій статті п