Notes de version Aspose.PSD pour Python via .NET 24.8

Clé Résumé Catégorie
PSDPYTHON-81 [AI Format] Ajout de la gestion des groupes XObject Amélioration
PSDPYTHON-82 Améliorer les capacités de transformation de déformation en ajoutant WarpSettings pour TextLayer et SmartObjectLayer Fonctionnalité
PSDPYTHON-83 [Format AI] Gérer les calques dans les opérateurs de flux de contenu Fonctionnalité
PSDPYTHON-84 Le résultat de rendu du fichier AI est très différent de celui des résultats Illustrator Problème
PSDPYTHON-85 Le remplacement de l’objet intelligent ne s’applique pas à tous les objets intelligents dans le fichier PSD Problème

Changements de l’API publique

APIs ajoutées:

  • P:Aspose.PSD.FileFormats.Psd.Layers.TextLayer.WarpSettings
  • P:Aspose.PSD.FileFormats.Psd.Layers.SmartObjects.SmartObjectLayer.WarpSettings
  • T:Aspose.PSD.FileFormats.Psd.Layers.Warp.WarpSettings
  • M:Aspose.PSD.FileFormats.Psd.Layers.Warp.WarpSettings.#ctor(Aspose.PSD.FileFormats.Psd.Layers.LayerResources.OSTypeStructure[],Aspose.PSD.Rectangle)
  • M:Aspose.PSD.FileFormats.Psd.Layers.Warp.WarpSettings.#ctor(Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PlacedResource)
  • P:Aspose.PSD.FileFormats.Psd.Layers.Warp.WarpSettings.Style
  • P:Aspose.PSD.FileFormats.Psd.Layers.Warp.WarpSettings.Rotate
  • P:Aspose.PSD.FileFormats.Psd.Layers.Warp.WarpSettings.Value
  • P:Aspose.PSD.FileFormats.Psd.Layers.Warp.WarpSettings.Bounds
  • P:Aspose.PSD.FileFormats.Psd.Layers.Warp.WarpSettings.MeshPoints
  • T:Aspose.PSD.FileFormats.Psd.Layers.Warp.WarpRotates
  • F:Aspose.PSD.FileFormats.Psd.Layers.Warp.WarpRotates.Horizontal
  • F:Aspose.PSD.FileFormats.Psd.Layers.Warp.WarpRotates.Vertical
  • T:Aspose.PSD.FileFormats.Psd.Layers.Warp.WarpStyles
  • F:Aspose.PSD.FileFormats.Psd.Layers.Warp.WarpStyles.None
  • F:Aspose.PSD.FileFormats.Psd.Layers.Warp.WarpStyles.Custom
  • F:Aspose.PSD.FileFormats.Psd.Layers.Warp.WarpStyles.Arc
  • F:Aspose.PSD.FileFormats.Psd.Layers.Warp.WarpStyles.ArcUpper
  • F:Aspose.PSD.FileFormats.Psd.Layers.Warp.WarpStyles.ArcLower
  • F:Aspose.PSD.FileFormats.Psd.Layers.Warp.WarpStyles.Arch
  • F:Aspose.PSD.FileFormats.Psd.Layers.Warp.WarpStyles.Bulge
  • F:Aspose.PSD.FileFormats.Psd.Layers.Warp.WarpStyles.Flag
  • F:Aspose.PSD.FileFormats.Psd.Layers.Warp.WarpStyles.Fish
  • F:Aspose.PSD.FileFormats.Psd.Layers.Warp.WarpStyles.Rise
  • F:Aspose.PSD.FileFormats.Psd.Layers.Warp.WarpStyles.Wave
  • F:Aspose.PSD.FileFormats.Psd.Layers.Warp.WarpStyles.Twist
  • F:Aspose.PSD.FileFormats.Psd.Layers.Warp.WarpStyles.Squeeze
  • F:Aspose.PSD.FileFormats.Psd.Layers.Warp.WarpStyles.Inflate

APIs supprimées:

  • Aucune

Exemples d’utilisation:

PSDPYTHON-81. [Format AI] Ajouter la gestion des groupes XObject

# Aucun exemple. Il s'agit d'une amélioration interne

PSDPYTHON-82. Améliorer les capacités de transformation de déformation en ajoutant WarpSettings pour TextLayer et SmartObjectLayer

        fichierSource = "smart_without_warp.psd"

        opt = PsdLoadOptions()
        opt.load_effects_resource = True
        opt.allow_warp_repaint = True
        fichierImageSortie = [None] * 4
        fichierPsdSortie = [None] * 4
        pngOpt = PngOptions()
        pngOpt.compression_level = 9
        pngOpt.color_type = PngColorType.TRUECOLOR_WITH_ALPHA

        for indiceCase in range(len(fichierImageSortie)):
            fichierImageSortie[indiceCase] = "export_" + str(indiceCase) + ".png"
            fichierPsdSortie[indiceCase] = "export_" + str(indiceCase) + ".psd"

            with PsdImage.load(fichierSource, opt) as image:
                img = cast(PsdImage, image)
                for calque in img.layers:
                    if is_assignable(calque, SmartObjectLayer):
                        calqueIntelligent = cast(SmartObjectLayer, calque)
                        calqueIntelligent.warp_settings = GetWarpSettingsByIndex(calqueIntelligent.warp_settings, indiceCase)

                    if is_assignable(calque, TextLayer):
                        calqueTexte = cast(TextLayer, calque)
                        if indiceCase != 3:
                            calqueTexte.warp_settings = GetWarpSettingsByIndex(calqueTexte.warp_settings, indiceCase)

                img.save(fichierPsdSortie[indiceCase], PsdOptions())
                img.save(fichierImageSortie[indiceCase], PsdOptions())

            with PsdImage.load(fichierPsdSortie[indiceCase], opt) as img:
                img.save(fichierImageSortie[indiceCase], pngOpt)

        def GetWarpSettingsByIndex(parametresDeDeformation, indiceCase):
            switcher = {
                0: {"Style": WarpStyles.RISE, "Rotate": WarpRotates.HORIZONTAL, "Value": 20},
                1: {"Style": WarpStyles.RISE, "Rotate": WarpRotates.VERTICAL, "Value": 10},
                2: {"Style": WarpStyles.FLAG, "Rotate": WarpRotates.HORIZONTAL, "Value": 30},
                3: {"Style": WarpStyles.CUSTOM}
            }
            params = switcher.get(indiceCase)
            if params:
                parametresDeDeformation.style = params.get("Style")
                if params.get("Rotate") is not None:
                    parametresDeDeformation.rotate = params.get("Rotate")
                if params.get("Value") is not None:
                    parametresDeDeformation.value = params.get("Value")
                if indiceCase == 3:
                    parametresDeDeformation.mesh_points[2].y += 70

            return parametresDeDeformation

PSDPYTHON-83. [Format AI] Gérer les calques dans les opérateurs de flux de contenu

        fichierSource = "Layers-NoPen.ai"
        fichierSortie = "Layers-NoPen.output.png"

        with AiImage.load(fichierSource) as image:
            image.save(fichierSortie, PngOptions())    

PSDPYTHON-84. Le résultat de rendu du fichier AI est très différent de celui des résultats Illustrator

        fichierSource = "4.ai"
        fichierSortie = "4_output.png"
        fichierReference = "4_ethalon.png"

        with AiImage.load(fichierSource) as image:
            image.save(fichierSortie, PngOptions())

PSDPYTHON-85. Le remplacement de l’objet intelligent ne s’applique pas à tous les objets intelligents dans le fichier PSD

        fichiers = ["simple_test", "w22"]
        fichierDeChangement = "image(19).png"

        for fichier in fichiers:
            fichierSource = fichier + ".psd"
            fichierSortie = fichier + "_output.psd"
            with Image.load(fichierSource) as img:
                image = cast(PsdImage, img)
                for calque in image.layers:
                    if is_assignable(calque, SmartObjectLayer):
                        calqueIntelligent = cast(SmartObjectLayer, calque)
                        calqueIntelligent.replace_contents(fichierDeChangement)
                image.save(fichierSortie)