تعديل صيغ فوتوشوب

استبدال الألوان في طبقات PSD

تسمح Aspose.PSD للجافا بتغيير لون الخلفية لكل طبقة من ملف 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 للجافا بالتلاعب في النص في طبقة النص من ملف 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 للجافا بالكشف عما إذا كان ملف 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 موجود عن طريق تمرير مسار الملف إلى طريقة التحميل الثابتة للفئة 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 موجود عن طريق تمرير مسار الملف إلى طريقة التحميل الثابتة للفئة Image. بمجرد تحميله، قم بتحويل/صب الصورة إلى PsdImage. أنشئ نسخة من فئة PngOptions و قم باعداد خصائصها المختلفة. اضبط خاصية ColorType على TruecolorWithAlpha. الآن قم بنداء طريقة Save من مثيل PngOptions. الكود المقدم يظهر لك كيفية تحويل PNG إلى Alphagray.

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

يوضح هذا المقال كيفية دعم تأثيرات مختلفة مثل Blur, Inner Glow, Outer Glow لطبقة 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 موجود عن طريق تمرير مسار الملف إلى طريقة التحميل الثابتة للفئة 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 موجود عن طريق تمرير مسار الملف إلى طريقة التحميل الثابتة للفئة 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. تم توفير الكود المقدم أدناه.

String dataDir = Utils.getDataDir(AddChannelMixerAdjustmentLayer.class) + "PSD/";
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);
}
// Cmyk Channel Mixer
sourceFileName = dataDir + "ChannelMixerAdjustmentLayerCmyk.psd";
psdPathAfterChange = dataDir + "ChannelMixerAdjustmentLayerCmykChanged.psd";
try (PsdImage img = (PsdImage) Image.load(sourceFileName)) {
for (int i = 0; i < img.getLayers().length; i++) {
if (img.getLayers()[i] instanceof CmykChannelMixerLayer) {
CmykChannelMixerLayer cmykLayer = (CmykChannelMixerLayer) img.getLayers()[i];
cmykLayer.getCyanChannel().setBlack((short) 20);
cmykLayer.getMagentaChannel().setYellow((short) 50);
cmykLayer.getYellowChannel().setCyan((short) -25);
cmykLayer.getBlackChannel().setYellow((short) 25);
}
}
img.save(psdPathAfterChange);
}
// Adding the new layer(Cmyk for this example)
sourceFileName = dataDir + "CmykWithAlpha.psd";
psdPathAfterChange = dataDir + "ChannelMixerAdjustmentLayerCmykChanged.psd";
try (PsdImage img1 = (PsdImage) Image.load(sourceFileName)) {
ChannelMixerLayer newlayer = img1.addChannelMixerAdjustmentLayer();
newlayer.getChannelByIndex(2).setConstant((short) 50);
newlayer.getChannelByIndex(0).setConstant((short) 50);
img1.save(psdPathAfterChange);
}

تقديم طبقات تعديل مخلط القناة

يوضح هذا الم