Notas de Lanzamiento de Aspose.PSD for Python via .NET 24.5

Clave Resumen Categoría
PSDPYTHON-60 [Formato AI] Agregar soporte para manejar archivos AI con encabezado EPSF Característica
PSDPYTHON-59 La semi transparencia se procesa incorrectamente en la vista previa del archivo psd Error
PSDPYTHON-61 La representación de la capa de forma es parcialmente incorrecta Error
PSDPYTHON-62 Excepción al guardar archivos PSD con tamaño superior a 200 MB y grandes dimensiones Error
PSDPYTHON-63 Fallo al guardar la imagen como excepción al guardar como PDF después de actualizar de la versión 23.7 a la 24.3 Error
PSDPYTHON-64 Solucionar el problema en el método GetFontInfoRecords para las fuentes chinas Error

Cambios en la API Pública

APIs Agregadas:

  • P:Aspose.PSD.ImageOptions.PsdOptions.BackgroundContents
  • P:Aspose.PSD.FileFormats.Ai.AiLayerSection.HasMultiLayerMasks
  • P:Aspose.PSD.FileFormats.Ai.AiLayerSection.ColorIndex

APIs Eliminadas:

  • Ninguna

Ejemplos de Uso:

PSDPYTHON-59. La semi transparencia se procesa incorrectamente en la vista previa del archivo psd

// La semi transparencia se procesa incorrectamente en la vista previa del archivo psd.
// BackgroundContents asignado a blanco. Las áreas transparentes deberían tener color blanco.

        archivoFuente = "rana_nosimbolo.psd"
        archivoSalida = "rana_nosimbolo_salida_backgroundcontents.psd"

        with PsdImage.load(archivoFuente) as imagenPsd:

            colorDeFondo = RawColor(PixelDataFormat.rgb_32_bpp, 0)

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

            colorDeFondo.set_as_int(valorArgb)  # Blanco

            opcionesPsd = PsdOptions(imagenPsd)
            opcionesPsd.color_mode = ColorModes.RGB
            opcionesPsd.compression_method = CompressionMethod.RLE
            opcionesPsd.channels_count = 4
            opcionesPsd.background_contents = colorDeFondo

            imagenPsd.save(archivoSalida, opcionesPsd)

PSDPYTHON-60. [Formato AI] Agregar soporte para manejar archivos AI con encabezado EPSF

        archivoFuente = "ejemplo.ai"
        rutaDeSalida = "ejemplo.png"
       
        def assert_are_equal(expected, actual):
            if expected != actual:
                raise Exception("Los objetos no son iguales.")

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

            imagen.save(rutaDeSalida, PngOptions())

PSDPYTHON-61. La representación de la capa de forma es parcialmente incorrecta

        archivoFuente = "PruebaCapaDeForma.psd"
        archivoSalida = "PruebaCapaDeForma_salida.psd"

        with PsdImage.load(archivoFuente) as imagen:
            img = cast(PsdImage, imagen)
            capaDeForma = cast(ShapeLayer, img.layers[2])
            ruta = capaDeForma.path
            formasDeRuta = ruta.get_items()
            listaDeNudos = []
            for formaDeRuta in formasDeRuta:
                nudos = formaDeRuta.get_items()
                listaDeNudos.extend(nudos)

            nuevaForma = PathShape()

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

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

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

            nudosBezier = [
                nudoBezier1,
                nudoBezier2,
                nudoBezier3
            ]

            nuevaForma.set_items(nudosBezier)

            nuevasFormas = list(formasDeRuta)
            nuevasFormas.append(nuevaForma)

            formaDeRutaNueva = nuevasFormas
            ruta.set_items(formaDeRutaNueva)

            capaDeForma.update()

            img.save(archivoSalida, PsdOptions())

        with PsdImage.load(archivoSalida) as imagen:
            img = cast(PsdImage, imagen)
            capaDeForma = cast(ShapeLayer, img.layers[2])
            ruta = capaDeForma.path
            formasDeRuta = ruta.get_items()
            listaDeNudos = []
            for formaDeRuta in formasDeRuta:
                nudos = formaDeRuta.get_items()
                listaDeNudos.extend(nudos)

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

PSDPYTHON-62. Excepción al guardar archivos PSD con tamaño superior a 200 MB y grandes dimensiones

        archivoFuente = "archivo_grande.psd"
        archivoSalida = "salida_bruta.psd"
        archivoDeReferencia = "salida_bruta.psd"

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

        with PsdImage.load(archivoFuente, opcionesDeCarga) as imagenPsd:
            opt = PsdOptions()
            opt.compression_method = CompressionMethod.RLE
            imagenPsd.save(archivoSalida, opt)

PSDPYTHON-63. Error de excepción al guardar la imagen como PDF después de actualizar de la versión 23.7 a la 24.3

        archivoFuente = "CVFlor.psd"
        archivoSalida = "_exportar.pdf"

        with PsdImage.load(archivoFuente) as imagenPsd:
            opcionesDeGuardado = PdfOptions()
            opcionesDeGuardado.pdf_core_options = PdfCoreOptions()

            imagenPsd.save(archivoSalida, opcionesDeGuardado)

PSDPYTHON-64. Solucionar el problema en el método GetFontInfoRecords para las fuentes chinas

        carpetaFuente = "Fuente"
        archivoFuente = "bd-mejor-rosa.psd"

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

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

            with PsdImage.load(archivoFuente, opcionesDeCargaPsd) as img:
                imagen = cast(PsdImage, img)
                for capa in imagen.layers:
                    if is_assignable(capa, TextLayer):
                        capaTexto = cast(TextLayer, capa)
                        if capaTexto.text == "mejor":
                            # Sin esta corrección habrá una excepción debido a la fuente china.
                            capaTexto.update_text("ÉXITO")
        finally:
            FontSettings.reset()
            FontSettings.update_fonts()