Browse our Products

Aspose.PSD for Python via .NET 25.10 - Release Notes

KeySummaryCategory
PSDPYTHON-246[AI Format] Implementing Type 3 (Radial) ShadingFeature
PSDPYTHON-247Optimization of Aspose.PSD rendering performance for large imagesEnhancement
PSDPYTHON-248If you modify the TextLayer and save the PSD file, an error occursBug
PSDPYTHON-249Editing of text in the specific PSD File throws a null reference exception on fontStyleRecord parsingBug
PSDPYTHON-250Fix the issue with saving large filesBug
PSDPYTHON-251Regression. An exception occurs whenever saving PSD files with a size of more than 200 MB and large dimensionsBug
PSDPYTHON-252Impossible to open the PSD file because of a null reference in SmartObjectResourceBug
PSDPYTHON-253Smart Object Replace in the specific file doesn’t workBug
PSDPYTHON-254The ImageLoadException occurs when loading AI filesBug
PSDPYTHON-255[AI Format] The NullReferenceException occurs when loading specific filesBug
PSDPYTHON-256[AI Format] The ImageLoadingException occurs on opening of a specific AI FIleBug
PSDPYTHON-257Rendering of the Gradient Effect in specific files doesn’t workBug
PSDPYTHON-258[Regression] Fix updating the LnkeResource on replacing smart objectsBug

Public API Changes

Added APIs:

  • None

Removed APIs:

  • None

Usage examples:

PSDPYTHON-246. [AI Format] Implementing Type 3 (Radial) Shading

        sourceFile = "Input_2.ai"
		outputFile = "output.png"

        with AiImage.load(sourceFile) as image:
            image.save(outputFile, PngOptions())

PSDPYTHON-247. Optimization of Aspose.PSD rendering performance for large images

        sourceFile = "bigfile.psd"
		outputFile = "output.png"

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

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

PSDPYTHON-248. If you modify the TextLayer and save the PSD file, an error occurs

        sourceFile = "35dd4d12-1301-4750-8cac-45052ac8678a_083_007.psd"
        outputFile = "output.psd"

        FontSettings.remove_font_cache_file()

        opt = PsdLoadOptions()
        opt.load_effects_resource = True

        with PsdImage.load(sourceFile, opt) as img:
            image = cast(PsdImage, img)
            for layer in image.layers:
                if (is_assignable(layer, TextLayer)):
                    textLayer = as_of(layer, TextLayer)
                    if textLayer is not None:
                        textLayer.update_text("SUCCESS")

            image.save(outputFile)

PSDPYTHON-249. Editing of text in the specific PSD File throws a null reference exception on fontStyleRecord parsing

        sourceFile = "bd-worlds-best-pink.psd"
        outputFile = "output.psd"

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

        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 is not None and textLayer.name == "best":
                        textLayer.update_text("SUCCESS")
            image.save(outputFile)

PSDPYTHON-250. Fix the issue with saving large files

        sourceFile = "bigfile.psd"
        outputFile = "export.png"

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

        pngOpt = PngOptions()
        pngOpt.compression_level = 9
        pngOpt.color_type = PngColorType.TRUECOLOR_WITH_ALPHA

        with PsdImage.load(sourceFile, loadOptions) as img:
            img.save(outputFile, pngOpt)

PSDPYTHON-251. Regression. An exception occurs whenever saving PSD files with a size of more than 200 MB and large dimensions

        sourceFile = "bigfile.psd"

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

        with PsdImage.load(sourceFile, loadOptions) as img:
             with io.BytesIO() as saveAsStream:
                img.save(saveAsStream)

PSDPYTHON-252. Impossible to open the PSD file because of a null reference in SmartObjectResource

        sourceFile = "Mixer_ipad_Hand_W_crash.psd"
        outputFile = "export.png"

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

        pngOpt = PngOptions()
        pngOpt.compression_level = 9
        pngOpt.color_type = PngColorType.TRUECOLOR_WITH_ALPHA

        with PsdImage.load(sourceFile, loadOptions) as img:
            img.save(outputFile, pngOpt)
PSDPYTHON-253. Smart Object Replace in the specific file doesn’t work
        fileName = "etikett var 3d.psd"
        replaceFileName = "Komplett2.jpg"
        outputFile = "output.png"

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

        pngOpt = PngOptions()
        pngOpt.color_type = PngColorType.TRUECOLOR_WITH_ALPHA

        with PsdImage.load(fileName, psdOptions) as img:
            psdImage = cast(PsdImage, img)
            for myLayer in psdImage.layers:
                if isinstance(myLayer, SmartObjectLayer):
                    mySmartObjectLayer = cast(SmartObjectLayer, myLayer)
                    mySmartObjectLayer.replace_contents(replaceFileName, True)
                    mySmartObjectLayer.update_modified_content()

            psdImage.save(outputFile, pngOpt)

PSDPYTHON-254. The ImageLoadException occurs when loading AI files

        sourceFile_1 = "3.ai"
        outputFile_1 = "3.png"

        with AiImage.load(sourceFile_1) as image:
            image.save(outputFile_1, PngOptions())

        Comparison.CheckAgainstEthalon(outputFile_1, referenceFile_1, 0, 1)

        sourceFile_2 = self.GetFileInBaseFolder("IcoMoon.ai")
        outputFile_2 = self.GetFileInOutputFolder("IcoMoon.png")
        referenceFile_2 = self.GetFileInBaseFolder("IcoMoon.png")

        with AiImage.load(sourceFile_2) as image:
            image.save(outputFile_2, PngOptions())

PSDPYTHON-255. [AI Format] The NullReferenceException occurs when loading specific files

        sourceFile = "Strawberry_jam_packaging.ai"
        outputFile = "Strawberry_jam_packaging.png"

        with AiImage.load(sourceFile) as image:
            image.save(outputFile, PngOptions())

PSDPYTHON-256. [AI Format] The ImageLoadingException occurs on opening of a specific AI FIle

        sourceFile = "379569.ai"
        outputFile_0 = "379569_0.png"
        outputFile_1 = "379569_1.png"

        with AiImage.load(sourceFile) as img:
            image = cast(AiImage, img)
            image.active_page_index = 0
            image.save(outputFile_0, PngOptions())

            image.active_page_index = 1
            image.save(outputFile_1, PngOptions())

PSDPYTHON-257. Rendering of the Gradient Effect in specific files doesn’t work

        inputFile = "iphone15snapcase(1).psd"
        outputFile = "output.png"

        psdOpt = PsdLoadOptions()
        psdOpt.load_effects_resource = True

        pngOpt = PngOptions()
        pngOpt.color_type = PngColorType.TRUECOLOR_WITH_ALPHA

        with PsdImage.load(inputFile, psdOpt) as img:
            img.save(outputFile, pngOpt)

PSDPYTHON-258. [Regression] Fix updating the LnkeResource on replacing smart objects

        inputFile = "w22.psd"
        changeFile = "image(19).png"
        outputFile = "output.psd"

        with PsdImage.load(inputFile) as img:
            image = cast(PsdImage, img)
            lnkeResource = cast(LnkeResource, image.global_layer_resources[5])

            assert 1 == lnkeResource.data_source_count
            oldUniqueId = lnkeResource[0].unique_id

            for layer in image.layers:
                if is_assignable(layer, SmartObjectLayer):
                    smart = cast(SmartObjectLayer, layer)
                    smart.replace_contents(changeFile)

            # Check that old data source has changed
            assert 1 == lnkeResource.data_source_count
            assert lnkeResource[0].unique_id != oldUniqueId

            image.save(outputFile)