คีย์ สรุป หมวดหมู่
PSDJAVA-216 สนับสนุนของ LnkEResource (Resource of Smart Object Layer) คุณลักษณะ
PSDJAVA-219 สนับสนุน britResource (Resource of Brightness/Contrast Adjustment Layer) คุณลักษณะ
PSDJAVA-222 ย้ายการตั้งค่า DefaultReplacementFont เข้าสู่ ImageOptionsBase class การปรับปรุง
PSDJAVA-217 การเปลี่ยนขนาดไฟล์ PSD ไม่ถูกต้องหากมีมาสค์ในชั้นการปรับที่มีขอบว่างเปล่า ข้อผิดพลาด
PSDJAVA-218 Psd Image โหมด RGB 16 bit/channel มีการอัปเดตชั้นเท่านั้นบนพรีวิว ข้อผิดพลาด
PSDJAVA-220 การเปลี่ยนเปลี่ยนของ PSD Layer Mask ถูกลบขณะบันทึก ข้อผิดพลาด
PSDJAVA-221 ลำดับของเลเยอร์ไม่ถูกต้องหลังจากเพิ่มชั้นเลเยอร์ลูกเข้าไปในชั้นเลเยอร์เปล่า ข้อผิดพลาด
PSDJAVA-223 มีข้อยกเว้นเมื่อโหลดไฟล์ PSD พิเศษที่มีคอมไพล์ LnkE Resource และคุณสมบัติ adobeStockLicenseState ข้อผิดพลาด
PSDJAVA-224 การบันทึกไฟล์ AI เป็นรูปแบบ Jpeg2000 ไม่ทำงาน ข้อผิดพลาด
PSDJAVA-225 Layer Group ที่ไม่ได้ใช้โหมดผสมผสาน ไม่ถูกเรนเดอร์ ข้อผิดพลาด
PSDJAVA-226 การเกิด NullReference Exception เมื่อพยายามแปลงไฟล์ Psd บางไฟล์เป็นภาพ ข้อผิดพลาด
PSDJAVA-227 การเกิด OverflowException เมื่อพยายามเปิดไฟล์ Psd บางไฟล์ ข้อผิดพลาด

การเปลี่ยนแปลงใน API สาธารณะ

API ที่เพิ่มเข้ามา:

API ที่ถูกลบออก:

ตัวอย่างการใช้:

PSDJAVA-216: สนับสนุนของ LnkEResource (Resource of Smart Object Layer)

 // ตัวอย่างของการเชื่อมโยงส่วนประเภทต่าง ๆ (รูปแบบเราส์เตอร์, ไลบรารี CC) ไปยัง PSD

// นอกจากนี้ API ของ LnkeResource ถือว่าจำเป็น

// ระดับคลาสที่เก็บเมธอดในโองการถ์

class LocalScopeExtension

{

    void assertIsTrue(boolean condition)

    {

        if (!condition)

        {

            throw new FormatException("ExampleOfLnkEResourceSupport ทำงานผิด.");

        }

    }

    void assertAreEqual(Object actual, Object expected)

    {

        assertIsTrue(actual != null && actual.equals(expected));

    }

    // ตัวอย่างนี้แสดงให้เห็นว่าต้องว่าจะได้หรือตั้งค่าของ LnkE

    // คุณสมบัติที่มีข้อมูลเกี่ยวกับไฟล์ลิ้งทางภายนอก

    void exampleOfLnkEResourceSupport(

            String fileName,

            int length,

            int length2,

            int length3,

            int length4,

            String fullPath,

            String date,

            double assetModTime,

            String childDocId,

            boolean locked,

            String uid,

            String name,

            String originalFileName,

            String fileType,

            longfileSize)

    {

        String outputPath = "out_" + fileName;

        // โหลด PSD ที่กำหนดล่วงหน้า

        PsdImage image = (PsdImage)Image.load(fileName);

        try

        {

            // ค้นหา LnkeResource ในระดับโกลบอล

            LnkeResource lnkeResource = null;

            for (LayerResource resource : image.getGlobalLayerResources())

            {

                if (resource instanceof LnkeResource)

                {

                    lnkeResource = (LnkeResource)resource;

                    // ตรวจสอบคุณสมบัติของ LnkeResource

                    assertAreEqual(lnkeResource.getLength(), length);

                    assertAreEqual(lnkeResource.get_Item(0).getUniqueId(), UUID.fromString(uid));

                    assertAreEqual(lnkeResource.get_Item(0).getFullPath(), fullPath);

                    assertAreEqual(new SimpleDateFormat("MM/dd/yyyy HH:mm:ss").format(lnkeResource.get_Item(0).getDate()), date);

                    assertAreEqual(lnkeResource.get_Item(0).getAssetModTime(), assetModTime);

                    assertAreEqual(lnkeResource.get_Item(0).getAssetLockedState(), locked);

                    assertAreEqual(lnkeResource.get_Item(0).getFileName(), name);

                    assertAreEqual(lnkeResource.get_Item(0).getFileSize(), fileSize);

                    assertAreEqual(lnkeResource.get_Item(0).getChildDocId(), childDocId);

                    assertAreEqual(lnkeResource.get_Item(0).getVersion(), 7);

                    assertAreEqual(lnkeResource.get_Item(0).getFileType().trim(), fileType);

                    assertAreEqual(lnkeResource.get_Item(0).getFileCreator().trim(), "");

                    assertAreEqual(lnkeResource.get_Item(0).getOriginalFileName(), originalFileName);

                    assertAreEqual(lnkeResource.get_Item(0).getCompId(), -1);

                    assertAreEqual(lnkeResource.get_Item(0).getOriginalCompId(), -1);

                    assertIsTrue(lnkeResource.get_Item(0).hasFileOpenDescriptor());

                    assertIsTrue(!lnkeResource.isEmpty());

                    assertIsTrue(lnkeResource.get_Item(0).getType() == LinkDataSourceType.liFE);

                    // อัปเดตคุณสมบัติของ LnkeResource

                    lnkeResource.get_Item(0).setFullPath("file:///C:/Aspose/net/Aspose.Psd/test/testdata/Images/Psd/SmartObjects/rgb8_2x2.png");

                    assertAreEqual(lnkeResource.getLength(), length2);

                    lnkeResource.get_Item(0).setFileName("rgb8_2x23.png");

                    assertAreEqual(lnkeResource.getLength(), length3);

                    lnkeResource.get_Item(0).setChildDocId(UUID.randomUUID().toString());

                    assertAreEqual(lnkeResource.getLength(), length4);

                    lnkeResource.get_Item(0).setDate(new Date());

                    lnkeResource.get_Item(0).setAssetModTime(Double.MAX_VALUE);

                    lnkeResource.get_Item(0).setFileSize(Long.MAX_VALUE);

                    lnkeResource.get_Item(0).setFileType("test");

                    lnkeResource.get_Item(0).setFileCreator("file");

                    lnkeResource.get_Item(0).setCompId(Integer.MAX_VALUE);

                    break;

                }

            }

            // ตรวจสอบว่า LnkeResource ถูกสนับสนุนหรือไม่

            assertIsTrue(lnkeResource != null);

            // บันทึกสำเนาของ PSD ที่โหลด

            image.save(outputPath, new PsdOptions(image));

        }

        finally

        {

            image.dispose();

        }

        // โหลดสำเนาที่บันทึก

        PsdImage image1 = (PsdImage)Image.load(outputPath);

        try

        {

            // แปลง PSD เป็นรูปแบบไฟล์ PNG (พร้อมกับช่องแอลฟาสำหรับความโป่งแสง)

            PngOptions pngOptions = new PngOptions();

            pngOptions.setColorType(PngColorType.TruecolorWithAlpha);

            image1.save(Path.changeExtension(outputPath, "png"), pngOptions);

        }

        finally

        {

            image1.dispose();

        }

    }

}

LocalScopeExtension $ = new LocalScopeExtension();

// ตัวอย่างนี้แสดงให้เห็นว่าต้องได้หรือตั้งค่าของ Psd LnkE ทราบ

// ข้อมูลเกี่ยวกับไฟล์ลิ้งทางภายนอก JPEG

$.exampleOfLnkEResourceSupport(

        "photooverlay_5_new.psd",

        0x21c,

        0x26c,

        0x274,

        0x27c,

        "file:///C:/Users/cvallejo/Desktop/photo.jpg",

        "05/09/2017 22:24:51",

        0,

        "F062B9DB73E8D124167A4186E54664B0",

        false,

        "02df245c-36a2-11e7-a9d8-fdb2b61f07a7",

        "photo.jpg",

        "photo.jpg",

        "JPEG",

        0x1520d);

// ตัวอย่างนี้แสดงให้เห็นว่าต้องได้หรือตั้งค่าของ Psd LnkE ทราบ

// ข้อมูลเกี่ยวกับไฟล์ลิ้งทางภายนอก PNG

$.exampleOfLnkEResourceSupport(

        "rgb8_2x2_linked.psd",

        0x284,

        0x290,

        0x294,

        0x2dc,

        "file:///C:/Aspose/net/Aspose.Psd/test/testdata/Issues/PSDNET-491/rgb8_2x2.png",

        "04/14/2020 14:23:44",

        0,

        "",

        false,

        "5867318f-3174-9f41-abca-22f56a75247e",

        "rgb8_2x2.png",

        "rgb8_2x2.png",

        "png",

        0x53);

// ตัวอย่างนี้แสดงให้เห็นว่าต้องได้หรือตั้งค่าของ Psd LnkE ทราบ

// ข้อมูลเกี่ยวกับไฟล์ลิ้งทางภายนอก CC ไลบรารี

$.exampleOfLnkEResourceSupport(

        "rgb8_2x2_asset_linked.psd",

        0x398,

        0x38c,

        0x388,

        0x3d0,

        "CC Libraries Asset “rgb8_2x2_linked/rgb8_2x2” (Feature is available in Photoshop CC 2015)",

        "01/01/0001 00:00:00",

        1588890915488.0d,

        "",

        false,

        "ec15f0a8-7f13-a640-b928-7d29c6e9859c",

        "rgb8_2x2_linked",

        "rgb8_2x2.png",

        "png",

        0);

PSDJAVA-219: สนับสนุนของ britResource (Resource of Brightness/Contrast Adjustment Layer)

 // ตัวอย่างของการเปลี่ยนรูปภาพ PSD Brightness/Contrast Layer Resource - BritResource นี้เป็น API ระดับล่างของ Aspose.PSD

// คุณสามารถใช้ Brightness/Contrast Layer ผ่าน API

// ที่ง่ายกว่า แต่การแก้ไขโดยตรงของรีซอร์ส Photoshop จะให้คุณสมบัติ

// มากกว่าสำหรับเนื้อหาของไฟล์ PSD

String srcPath = "BrightnessContrastPS6.psd";

String dstPath = "BrightnessContrastPS6_output.psd";

// โหลดเอกสาร Photoshop ที่มีชั้นการปรับ Brightness/Contrast

PsdImage psdImage = (PsdImage)Image.load(srcPath);

try

{

    // ค้นหา BritResource

    for (Layer layer : psdImage.getLayers())

    {

        if (layer instanceof BrightnessContrastLayer)

        {

            for (LayerResource layerResource : layer.getResources())

            {

                if (layerResource instanceof BritResource)

                {

                    BritResource resource = (BritResource)layerResource;

                    // ตรวจสอบคุณสมบัติของ resource

                    if (resource.getBrightness() != -40 ||

                            resource.getContrast() != 10 ||

                            resource.getLabColor() ||

                            resource.getMeanValueForBrightnessAndContrast() != 127)

                    {

                        throw new RuntimeException("BritResource ถูกอ่านผิด");

                    }

                    // อัปเดตคุณสมบัติของ resource

                    resource.setBrightness((short)25);

                    resource.setContrast((short)-14);

                    resource.setLabColor(true);

                    resource.setMeanValueForBrightnessAndContrast((short)200);

                    // บันทึกสำเนาของ PSD ที่อัปเดต

                    psdImage.save(dstPath, new PsdOptions());

                    break;

                }

            }

        }

    }

}

finally

{

    psdImage.dispose();

}

PSDJAVA-217: การเปลี่ยนขนาดไฟล์ PSD ไม่ถูกต้องหากมีมาสค์ในชั้นการปรับที่มีขอบว่างเปล่า

 // ตัวอย่างของการเปลี่ยนขนาดรูปภาพที่มีมาสค์ในชั้นการปรับที่มีขอบว่างเปล่า

// โปรแกรมโหลด PSD ที่กำหนดล่วงหน้าเพื่อตรวจสอบว่าไม่มีข้อยกเว้น

final int scale = 2; // ค่าคงที่

String[] names = {

    "OneRegularAndOneAdjustmentWithVectorAndLayerMask",

    "LevelsLayerWithLayerMaskRgb",

    "LevelsLayerWithLayerMaskCmyk",

};

for (String name : names)

{

    String srcFilePath = name + ".psd";

    String dstFilePath = "output_" + srcFilePath;

    String dstPngFilePath = "output_" + name + ".png";

    // โหลด PSD ที่กำหนดที่มีมาสค์ในชั้นการปรับที่มีขอบว่างเปล่า

    PsdLoadOptions psdLoadOptions = new PsdLoadOptions();

    psdLoadOptions.setLoadEffectsResource(true);

    PsdImage image = (PsdImage)Image.load(srcFilePath, psdLoadOptions);

    try

    {

        // เปลี่ยนขนาดรูปภาพ

        image.resize(image.getWidth() * scale, image.getHeight() * scale);

        // บันทึกสำเนาของ PSD ที่โหลด

        image.save(dstFilePath, new PsdOptions());

        // ส่งออก PSD เป็นไฟล์ PNG (พร้อมกับช่องแอลฟาสำหรับความโป่งแสง)

        PngOptions pngOptions = new PngOptions();

        pngOptions.setColorType(PngColorType.TruecolorWithAlpha);

        image.save(dstPngFilePath, pngOptions);

    }

    finally

    {

        image.dispose();

    }

}

PSDJAVA-218: Psd Image โหมด RGB 16 bit/channel มีการอัปเดตชั้นเท่านั้นบนพรีวิว

 // ตัวอย่างของการอัปเดตเลเยอร์สำหรับภาพชั้น 16 บิต RGB

// โปรแกรมวาดบางสิ่งบนทุกชั้นเพื่อให้แน่ใจว่าชั้นทั้งหมดได้รับการอัปเดตอย่างถูกต้อง

String sourceFilePath = "in.psd";

String outputFilePath = "output.psd";

// โหลด PSD ที่กำหนดในโหมด RGB 16 bit

PsdImage image = (PsdImage)Image.load(sourceFilePath);

try

{

    for (Layer layer : image.getLayers())

    {

        // วาดชื่อเลเยอร์และเส้นขอบภายใน