Note sulla versione di Aspose.PSD per Python via .NET 24.8

Chiave Sommario Categoria
PSDPYTHON-81 [Formato AI] Aggiunta gestione per Gruppi XObject Miglioramento
PSDPYTHON-82 Migliorare le capacità di trasformazione Warp aggiungendo WarpSettings per TextLayer e SmartObjectLayer Caratteristica
PSDPYTHON-83 [Formato AI] Gestire i livelli negli operatori di flusso dei contenuti Caratteristica
PSDPYTHON-84 Il risultato del rendering del file AI è molto diverso rispetto ai risultati di Illustrator Errore
PSDPYTHON-85 Il ricollegamento degli oggetti intelligenti non si applica a tutti gli oggetti intelligenti nel file PSD Errore

Cambiamenti nell’API pubblica

API aggiunte:

  • 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

API rimosse:

  • Nessuna

Esempi di utilizzo:

PSDPYTHON-81. [Formato AI] Aggiunta gestione per Gruppi XObject

#Nessun esempio. Si tratta di un miglioramento interno

PSDPYTHON-82. Migliorare le capacità di trasformazione Warp aggiungendo WarpSettings per TextLayer e SmartObjectLayer

        fileSorgente = "smart_without_warp.psd"
        
        opt = PsdLoadOptions()
        opt.load_effects_resource = True
        opt.allow_warp_repaint = True
        outputImageFile = [None] * 4
        outputPsdFile = [None] * 4
        pngOpt = PngOptions()
        pngOpt.compression_level = 9
        pngOpt.color_type = PngColorType.TRUECOLOR_WITH_ALPHA

        for indiceCaso in range(len(outputImageFile)):
            outputImageFile[indiceCaso] = "export_" + str(indiceCaso) + ".png"
            outputPsdFile[indiceCaso] = "export_" + str(indiceCaso) + ".psd"

            with PsdImage.load(fileSorgente, opt) as immagine:
                img = cast(PsdImage, immagine)
                for layer in img.layers:
                    if is_assignable(layer, SmartObjectLayer):
                        smartLayer = cast(SmartObjectLayer, layer)
                        smartLayer.warp_settings = GetWarpSettingsByIndex(smartLayer.warp_settings, indiceCaso)

                    if is_assignable(layer, TextLayer):
                        textLayer = cast(TextLayer, layer)
                        if indiceCaso != 3:
                            textLayer.warp_settings = GetWarpSettingsByIndex(textLayer.warp_settings, indiceCaso)

                img.save(outputPsdFile[indiceCaso], PsdOptions())
                img.save(outputImageFile[indiceCaso], PsdOptions())

            with PsdImage.load(outputPsdFile[indiceCaso], opt) as img:
                img.save(outputImageFile[indiceCaso], pngOpt)

        def GetWarpSettingsByIndex(warpParams, indiceCaso):
            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(indiceCaso)
            if params:
                warpParams.style = params.get("Style")
                if params.get("Rotate") is not None:
                    warpParams.rotate = params.get("Rotate")
                if params.get("Value") is not None:
                    warpParams.value = params.get("Value")
                if indiceCaso == 3:
                    warpParams.mesh_points[2].y += 70

            return warpParams

PSDPYTHON-83. [Formato AI] Gestire i livelli negli operatori di flusso dei contenuti

        fileSorgente = "Layers-NoPen.ai"
        fileOutput = "Layers-NoPen.output.png"

        with AiImage.load(fileSorgente) as immagine:
            immagine.save(fileOutput, PngOptions())

PSDPYTHON-84. Il risultato del rendering del file AI è molto diverso rispetto ai risultati di Illustrator

        fileSorgente = "4.ai"
        fileOutput = "4_output.png"
        fileDiRiferimento = "4_ethalon.png"

        with AiImage.load(fileSorgente) as immagine:
            immagine.save(fileOutput, PngOptions())

PSDPYTHON-85. Il ricollegamento degli oggetti intelligenti non si applica a tutti gli oggetti intelligenti nel file PSD

        files = ["simple_test", "w22"]
        fileDaCambiare = "image(19).png"

        for file in files:
            fileSorgente = file + ".psd"
            fileOutput = file + "_output.psd"
            with Image.load(fileSorgente) as img:
                immagine = cast(PsdImage, img)
                for layer in immagine.layers:
                    if is_assignable(layer, SmartObjectLayer):
                        smartLayer = cast(SmartObjectLayer, layer)
                        smartLayer.replace_contents(fileDaCambiare)
                immagine.save(fileOutput)