Memanipulasi Format Photoshop

Penggantian Warna pada Lapisan PSD

Aspose.PSD untuk Java memungkinkan Anda untuk mengubah warna latar belakang dari setiap lapisan dalam file PSD. Silakan gunakan kelas Aspose.PSD.FileFormats.Psd.Layers.BackgroundColor untuk mengubah warna latar belakang lapisan dalam lapisan PSD. Potongan kode berikut memuat file PSD, akses lapisan, perbarui warna latar belakang, dan simpan file 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");
}

Memperbarui Lapisan Teks dalam File PSD

Aspose.PSD untuk Java memungkinkan Anda untuk memanipulasi teks dalam lapisan teks dari file PSD. Silakan gunakan kelas Aspose.PSD.FileFormats.Psd.Layers.TextLayer untuk memperbarui teks pada lapisan PSD. Potongan kode berikut memuat file PSD, akses lapisan teks, perbarui teks, dan simpan file PSD dengan nama baru menggunakan metode 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");
}

Mendeteksi PSD yang Telah Diratakan

Aspose.PSD untuk Java memungkinkan Anda untuk mendeteksi apakah file PSD yang diberikan telah diratakan atau tidak. Properti IsFlatten telah diperkenalkan dalam kelas Aspose.PSD.FileFormats.Psd.PsdImage untuk mencapai fungsionalitas ini. Potongan kode berikut memuat file PSD dan mengakses properti 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());
}

Menggabungkan Lapisan PSD

Artikel ini menunjukkan cara menggabungkan lapisan dalam file PSD saat mengonversi file PSD menjadi JPG dengan Aspose.PSD. Pada contoh di bawah ini, file PSD yang ada dimuat dengan melewatkan jalur file ke metode Load statis kelas Image. Setelah dimuat, konversikan/cast gambar ke PsdImage. Buat instance kelas JpegOptions dan atur berbagai propertinya. Sekarang panggil metode Save dari instansi PsdImage. Potongan kode berikut menunjukkan cara menggabungkan lapisan 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);
}

Dukungan GrayScale dengan Alpha untuk PSD

Artikel ini menunjukkan cara mendukung GrayScale dengan alpha untuk file PSD saat mengonversi file PSD ke PNG dengan Aspose.PSD. Pada contoh di bawah ini, file PSD yang ada dimuat dengan melewatkan jalur file ke metode Load statis kelas Image. Setelah dimuat, konversikan/cast gambar ke PsdImage. Buat instance dari kelas PngOptions dan atur berbagai propertinya. Atur properti ColorType ke TruecolorWithAlpha. Sekarang panggil metode Save dari instansi PngOptions. Potongan kode berikut menunjukkan cara mengonversi ke Grayscale PNG dengan Alpha.

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);
}

Dukungan Efek Lapisan untuk PSD

Artikel ini menunjukkan cara mendukung efek berbeda seperti Blur, Inner Glow, Outer Glow untuk lapisan PSD. Potongan kode berikut menunjukkan cara mendukung efek lapisan.

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);
}

Dukungan Tanggal dan Waktu Pembuatan Lapisan

Artikel ini menunjukkan cara mendukung tanggal dan waktu pembuatan lapisan untuk lapisan PSD. Potongan kode berikut menunjukkan cara membuat lapisan.

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();
}

Dukungan Pewarnaan Lembar Sorot

Artikel ini menunjukkan cara memuat gambar psd lalu mengubah serta menyorot warna lembar dan menyimpannya sebagai gambar. Potongan kode telah disediakan.

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);
}

Dukungan Lapisan Teks pada Runtime

Artikel ini menunjukkan cara menambahkan lapisan teks pada runtime untuk gambar PSD. Potongan kode telah disediakan di bawah.

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);
}

Dukungan Lapisan Penyesuaian

Artikel ini menunjukkan cara menyesuaikan lapisan dan jika lapisan null maka menggabungkan lapisan dan menyimpannya sebagai gambar PSD. Potongan kode telah disediakan di bawah.

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);
}

Mengelola Kecerahan dan Kontras pada Lapisan Penyesuaian

Artikel ini menunjukkan cara menjelajahi lapisan dan mengelola kecerahan dan kontras dalam lapisan dan kemudian menyimpannya sebagai gambar PSD. Potongan kode telah disediakan di bawah.

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);
}

Mengelola Lapisan Pemaparan

Artikel ini menunjukkan cara menambahkan dan mengedit lapisan pemaparan dan mengelola lapisan pemaparan dan kemudian menyimpannya sebagai gambar PSD. Potongan kode telah disediakan di bawah.

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);
}

Mengelola Lapisan Pengaturan Pencampur Saluran

Artikel ini menunjukkan cara mengelola lapisan penyesuaian dan mengatur warna yang berbeda dan kemudian menyimpannya sebagai gambar PSD. Potongan kode telah disediakan di bawah.

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);
}

Menggabungkan Lapisan PSD ke Lapisan Lain

Artikel ini menunjukkan cara menggabungkan lapisan ke lapisan lain dalam file PSD dengan Aspose.PSD. Pada contoh di bawah ini, file PSD yang ada dimuat dengan melewatkan jalur file ke metode Load statis kelas Image. Sekarang panggil metode Save dari instansi PsdImage. Potongan kode berikut menunjukkan cara menggabungkan lapisan 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);
}

Dukungan Untuk Kotak Batas Teks

Artikel ini menunjukkan cara Mendukung kotak batas teks dalam file PSD dengan Aspose.PSD. Pada contoh di bawah ini, file PSD yang ada dimuat dengan melewatkan jalur file ke metode Load statis kelas Image. TextBoundBox adalah ukuran lapisan maksimum untuk lapisan Teks. Sekarang panggil metode Save dari instansi PsdImage. Potongan kode berikut menunjukkan cara menggabungkan lapisan 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);
}

Dukungan Untuk Sumber Daya IOPA

Artikel ini menunjukkan cara mendukung sumber daya IOPA dalam file PSD dengan Aspose.PSD. Potongan kode berikut menunjukkan cara mendukung IOPA dalam lapisan 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);
}

Mengelola Opasitas Lapisan

Artikel ini menunjukkan cara mengelola opasitas lapisan dalam file PSD dengan Aspose.PSD. Potongan kode telah disediakan di bawah.

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);
}

Rendering Lapisan Penyesuaian Kurva

Artikel ini menunjukkan cara merender penyesuaian kurva lapisan dalam file PSD dan merendernya ke PNG juga dengan Aspose.PSD. Potongan kode telah disediakan di bawah.

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);
}
}

Menambahkan Lapisan Penyesuaian Kurva

Artikel ini menunjukkan cara menambahkan lapisan penyesuaian kurva dalam file PSD dengan Aspose.PSD. Potongan kode telah disediakan di bawah.

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");
}

Manajer Lapisan Penyesuaian Kecerahan Foto dan Kontras

Artikel ini menunjukkan cara menelusuri setiap lapisan dan mengelola kecerahan dan kontras dalam lapisan dan kemudian menyimpannya sebagai gambar PSD. Potongan kode telah disediakan di bawah.

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);
}

Manajer Lapisan Pemaparan

Artikel ini menunjukkan cara menambah dan menyunting lapisan pemaparan dan mengelola lapisan pemaparan dan kemudian menyimpannya sebagai gambar PSD. Potongan kode telah disediakan di bawah.

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);
}

Manajemen Lapisan Pengatur Kuningan Saluran

Artikel ini menunjukkan cara mengelola lapisan penyesuaian dan mengatur berbagai warna dan kemudian menyimpannya sebagai gambar PSD. Potongan kode telah disediakan di bawah.

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);
}

Menggabungkan Lapisan PSD ke Lapisan Lainnya

Artikel ini menunjukkan cara menggabungkan lapisan ke lapisan lain dalam file PSD dengan Aspose.PSD. Pada contoh di bawah ini, file PSD yang ada dimuat dengan melewatkan jalur file ke metode Load statis kelas Image. Sekarang panggil metode Save dari instansi PsdImage. Potongan kode berikut menunjukkan cara menggabungkan lapisan 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);
}

Dukungan Untuk Kotak Batas Teks

Artikel ini menunjukkan cara Mendukung kotak batas teks dalam file PSD dengan Aspose.PSD. Pada contoh di bawah ini, file PSD yang ada dimuat dengan melewatkan jalur file ke metode Load statis kelas Image. TextBoundBox adalah ukuran lapisan maksimum untuk lapisan Teks. Sekarang panggil metode Save dari instansi PsdImage. Potongan kode berikut menunjukkan cara menggabungkan lapisan 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);
}

Dukungan Untuk Sumber Daya IOPA

Artikel ini menunjukkan cara mendukung sumber daya IOPA dalam file PSD dengan Aspose.PSD. Potongan kode berikut menunjukkan cara mendukung IOPA dalam lapisan 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);
}

Mengelola Opasitas Lapisan

Artikel ini menunjukkan cara mengelola opasitas lapisan dalam file PSD dengan Aspose.PSD. Potongan kode telah disediakan di bawah.

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);
}

Rendering Lapisan Penyesuaian Kurva

Artikel ini menunjukkan cara merender penyesuaian kurva lapisan dalam file PSD dan merendernya ke PNG juga dengan Aspose.PSD. Potongan kode telah disediakan di bawah.

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);
}
}

Menambahkan Lapisan Penyesuaian Kurva

Artikel ini