Key สรุป หมวดหมู่
PSDPYTHON-60 [รูปแบบ AI] เพิ่มการสนับสนุนในการจัดการไฟล์ AI ที่มีหัวเรื่อง EPSF คุณลักษณะ
PSDPYTHON-59 การซีมิโปรแปรนซี้ผิดพลาดในการดูตัวอย่างไฟล์ psd ข้อผิดพลาด
PSDPYTHON-61 การแสดงผลของเลเยอร์รูปร่างบางส่วนไม่ถูกต้อง ข้อผิดพลาด
PSDPYTHON-62 มีปัญหาเมื่อบันทึกไฟล์ PSD ด้วยขนาดมากกว่า 200 MB และมีขนาดใหญ่ ข้อผิดพลาด
PSDPYTHON-63 ข้อยกเว้นของภาพไม่สามารถบันทึกเมื่อบันทึกเป็น PDF หลังจากอัพเดตจาก 23.7 เป็น 24.3 ข้อผิดพลาด
PSDPYTHON-64 แก้ไขปัญหาในวิธีการในการรับข้อมูลเกี่ยวกับฟอนต์จีน ข้อผิดพลาด

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

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

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

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

PSDPYTHON-59. การซีมิโปรแปรนซี้ผิดพลาดในการดูตัวอย่างไฟล์ psd

// การซีมิโปรแปรนซี้ผิดพลาดในการดูตัวอย่างไฟล์ psd
// BackgroundContents กำหนดให้เป็นสีขาว พื้นที่โปร่งใสควรมีสีขาว

        sourceFile = "frog_nosymb.psd"
        outputFile = "frog_nosymb_backgroundcontents_output.psd"

        with PsdImage.load(sourceFile) as psdImage:

            backgroundColor = RawColor(PixelDataFormat.rgb_32_bpp, 0)

            argbValue = ctypes.c_int32(255 << 24 | 255 << 16 | 255 << 8 | 255).value

            backgroundColor.set_as_int(argbValue)  # สีขาว

            psdOptions = PsdOptions(psdImage)
            psdOptions.color_mode = ColorModes.RGB
            psdOptions.compression_method = CompressionMethod.RLE
            psdOptions.channels_count = 4
            psdOptions.background_contents = backgroundColor

            psdImage.save(outputFile, psdOptions)

PSDPYTHON-60. [รูปแบบ AI] เพิ่มการสนับสนุนในการจัดการไฟล์ AI ที่มีหัวเรื่อง EPSF

        sourceFile = "example.ai"
        outputFilePath = "example.png"
       
        def assert_are_equal(expected, actual):
            if expected != actual:
                raise Exception("Objects are not equal.")

        with AiImage.load(sourceFile) as img:
            image = cast(AiImage, img)
            assert_are_equal(len(image.layers), 2)
            assert_are_equal(image.layers[0].has_multi_layer_masks, False)
            assert_are_equal(image.layers[0].color_index, -1)
            assert_are_equal(image.layers[1].has_multi_layer_masks, False)
            assert_are_equal(image.layers[1].color_index, -1)

            image.save(outputFilePath, PngOptions())

PSDPYTHON-61. การแสดงผลของเลเยอร์รูปร่างบางส่วนไม่ถูกต้อง

        sourceFile = "ShapeLayerTest.psd"
        outputFile = "ShapeLayerTest_output.psd"

        with PsdImage.load(sourceFile) as image:
            im = cast(PsdImage, image)
            shapeLayer = cast(ShapeLayer, im.layers[2])
            path = shapeLayer.path
            pathShapes = path.get_items()
            knotsList = []
            for pathShape in pathShapes:
                knots = pathShape.get_items()
                knotsList.extend(knots)

            newShape = PathShape()

            bezierKnot1 = BezierKnotRecord()
            bezierKnot1.is_linked=True
            bezierKnot1.points=[
                    PointFToResourcePoint(PointF(100, 100), shapeLayer.container.size),
                    PointFToResourcePoint(PointF(100, 100), shapeLayer.container.size),
                    PointFToResourcePoint(PointF(100, 100), shapeLayer.container.size)
                ]

            bezierKnot2 = BezierKnotRecord()
            bezierKnot2.is_linked=True
            bezierKnot2.points=[
                    PointFToResourcePoint(PointF(50, 490), shapeLayer.container.size),
                    PointFToResourcePoint(PointF(100, 490), shapeLayer.container.size),
                    PointFToResourcePoint(PointF(150, 490), shapeLayer.container.size)
                ]

            bezierKnot3 = BezierKnotRecord()
            bezierKnot3.is_linked=True
            bezierKnot3.points=[
                    PointFToResourcePoint(PointF(490, 150), shapeLayer.container.size),
                    PointFToResourcePoint(PointF(490, 50), shapeLayer.container.size),
                    PointFToResourcePoint(PointF(490, 20), shapeLayer.container.size)
                ]

            bezierKnots = [
                bezierKnot1,
                bezierKnot2,
                bezierKnot3
            ]

            newShape.set_items(bezierKnots)

            newShapes = list(pathShapes)
            newShapes.append(newShape)

            pathShapeNew = newShapes
            path.set_items(pathShapeNew)

            shapeLayer.update()

            im.save(outputFile, PsdOptions())

        with PsdImage.load(outputFile) as image:
            im = cast(PsdImage, image)
            shapeLayer = cast(ShapeLayer, im.layers[2])
            path = shapeLayer.path
            pathShapes = path.get_items()
            knotsList = []
            for pathShape in pathShapes:
                knots = pathShape.get_items()
                knotsList.extend(knots)

            assert len(pathShapes) == 3
            assert shapeLayer.left == 42
            assert shapeLayer.top == 14
            assert shapeLayer.bounds.width == 1600
            assert shapeLayer.bounds.height == 1086

PSDPYTHON-62. มีปัญหาเมื่อบันทึกไฟล์ PSD ด้วยขนาดมากกว่า 200 MB และมีขนาดใหญ่

        sourceFile = "bigfile.psd"
        outputFile = "output_raw.psd"
        referenceFile = "output_raw.psd"

        loadOptions = PsdLoadOptions()
        loadOptions.load_effects_resource = True
        loadOptions.use_disk_for_load_effects_resource = True

        with PsdImage.load(sourceFile, loadOptions) as psdImage:
            opt = PsdOptions()
            opt.compression_method = CompressionMethod.RLE
            psdImage.save(outputFile, opt)

PSDPYTHON-63. มีข้อยกเว้นเมื่อบันทึกภาพล้มเหลวเมื่อบันทึกเป็น PDF หลังจากอัพเดตจาก 23.7 เป็น 24.3

        sourceFile = "CVFlor.psd"
        outputFile = "_export.pdf"

        with PsdImage.load(sourceFile) as psdImage:
            saveOptions = PdfOptions()
            saveOptions.pdf_core_options = PdfCoreOptions()

            psdImage.save(outputFile, saveOptions)

PSDPYTHON-64. แก้ไขปัญหาในวิธีการในการรับข้อมูลเกี่ยวกับฟอนต์จีน

        fontFolder = "Font"
        sourceFile = "bd-worlds-best-pink.psd"

        psdLoadOptions = PsdLoadOptions()
        psdLoadOptions.load_effects_resource = True
        psdLoadOptions.allow_warp_repaint = True

        try:
            FontSettings.set_fonts_folders([fontFolder], True)
            FontSettings.update_fonts()

            with PsdImage.load(sourceFile, psdLoadOptions) as img:
                image = cast(PsdImage, img)
                for layer in image.layers:
                    if is_assignable(layer, TextLayer):
                        textLayer = cast(TextLayer, layer)
                        if textLayer.text == "best":
                            # โดยไม่มีการแก้ไขที่นี่จะเกิดข้อยกเว้นเนื่องจากฟอนต์จีน
                            textLayer.update_text("SUCCESS")
        finally:
            FontSettings.reset()
            FontSettings.update_fonts()