Notas de la versión de Aspose.PSD para Java 24.6

Clave Resumen Categoría
PSDJAVA-628 Implementar soporte de capa de mapa de degradado Característica
PSDJAVA-629 [Formato AI] Agregar soporte de metadatos de paquete X a AI formato Característica
PSDJAVA-630 Implementar tipos de deformación Inflate, Squeeze y Twist Característica
PSDJAVA-631 Los modos Rgb y Lab no pueden contener menos de 3 canales y más de 4 canales en el archivo con capas de ArtBoard Error
PSDJAVA-632 El área de procesamiento superior debe ser positiva. (Parámetro ‘areaToProcess’) en el procesamiento de archivos específicos Error
PSDJAVA-633 La imagen ampliada sobre el lienzo se recorta después de guardarla. Los datos se pierden pero la vista previa se ve correcta Error

Cambios en la API pública

APIs añadidas:

  • M:com.aspose.psd.fileformats.ai.AiImage.getXmpData
  • M:com.aspose.psd.fileformats.psd.PsdImage.addGradientMapAdjustmentLayer
  • M:com.aspose.psd.fileformats.psd.layers.layerresources.GrdmResource.setMaximumColor(com.aspose.psd.fileformats.psd.rawcolor.RawColor)
  • M:com.aspose.psd.fileformats.psd.layers.layerresources.GrdmResource.setMinimumColor(com.aspose.psd.fileformats.psd.rawcolor.RawColor)
  • T:com.aspose.psd.fileformats.psd.layers.adjustmentlayers.GradientMapLayer
  • M:com.aspose.psd.fileformats.psd.layers.adjustmentlayers.GradientMapLayer.setGradientSettings(com.aspose.psd.fileformats.psd.layers.fillsettings.BaseGradientFillSettings)
  • M:com.aspose.psd.fileformats.psd.layers.adjustmentlayers.GradientMapLayer.getGradientSettings
  • M:com.aspose.psd.fileformats.psd.layers.fillsettings.NoiseGradientFillSettings.getExpansionCount
  • M:com.aspose.psd.fileformats.psd.layers.fillsettings.NoiseGradientFillSettings.setExpansionCount(short)
  • T:com.aspose.psd.fileformats.psd.layers.layerresources.GradientHelper
  • M:com.aspose.psd.fileformats.psd.layers.layerresources.GradientHelper.#ctor
  • M:com.aspose.psd.fileformats.psd.layers.layerresources.GradientHelper.gradientKindToStr(int)
  • M:com.aspose.psd.fileformats.psd.layers.layerresources.GradientHelper.noiseColorModelToInt(short)
  • M:com.aspose.psd.fileformats.psd.layers.layerresources.GradientHelper.noiseColorModelToStr(short)
  • M:com.aspose.psd.fileformats.psd.layers.layerresources.GradientHelper.intToNoiseColorModel(short)
  • M:com.aspose.psd.fileformats.psd.layers.layerresources.GradientHelper.strToGradientKind(java.lang.String)
  • M:com.aspose.psd.fileformats.psd.layers.layerresources.GradientHelper.strToNoiseColorModel(java.lang.String)
  • F:com.aspose.psd.fileformats.psd.layers.layerresources.GradientHelper.StrGradientNoise
  • F:com.aspose.psd.fileformats.psd.layers.layerresources.GradientHelper.StrGradientSolid
  • F:com.aspose.psd.fileformats.psd.layers.layerresources.GradientHelper.StrModelHSB
  • F:com.aspose.psd.fileformats.psd.layers.layerresources.GradientHelper.StrModelLAB
  • F:com.aspose.psd.fileformats.psd.layers.layerresources.GradientHelper.StrModelRGB
  • F:com.aspose.psd.fileformats.psd.layers.layerresources.GradientHelper.IntModelRGB
  • F:com.aspose.psd.fileformats.psd.layers.layerresources.GradientHelper.IntModelLAB
  • F:com.aspose.psd.fileformats.psd.layers.layerresources.GradientHelper.IntModelHSB
  • M:com.aspose.psd.fileformats.psd.layers.fillsettings.BaseGradientFillSettings.getGradientName
  • M:com.aspose.psd.fileformats.psd.layers.fillsettings.BaseGradientFillSettings.setGradientName(java.lang.String)

APIs removidas:

  • M:com.aspose.psd.fileformats.psd.layers.fillsettings.GradientFillSettings.getGradientName
  • M:com.aspose.psd.fileformats.psd.layers.fillsettings.GradientFillSettings.setGradientName(java.lang.String)
  • T:com.aspose.psd.fileformats.psd.layers.layerresources.GdflResourceHelper
  • M:com.aspose.psd.fileformats.psd.layers.layerresources.GdflResourceHelper.#ctor
  • M:com.aspose.psd.fileformats.psd.layers.layerresources.GdflResourceHelper.gradientKindToStr(int)
  • M:com.aspose.psd.fileformats.psd.layers.layerresources.GdflResourceHelper.noiseColorModelToStr(short)
  • M:com.aspose.psd.fileformats.psd.layers.layerresources.GdflResourceHelper.strToGradientKind(java.lang.String)
  • M:com.aspose.psd.fileformats.psd.layers.layerresources.GdflResourceHelper.strToNoiseColorModel(java.lang.String)
  • F:com.aspose.psd.fileformats.psd.layers.layerresources.GdflResourceHelper.StrGradientNoise
  • F:com.aspose.psd.fileformats.psd.layers.layerresources.GdflResourceHelper.StrGradientSolid
  • F:com.aspose.psd.fileformats.psd.layers.layerresources.GdflResourceHelper.StrModelHSB
  • F:com.aspose.psd.fileformats.psd.layers.layerresources.GdflResourceHelper.StrModelLAB
  • F:com.aspose.psd.fileformats.psd.layers.layerresources.GdflResourceHelper.StrModelRGB

Ejemplos de uso:

PSDJAVA-628. Implementar soporte de capa de mapa de degradado

    public static void main(String[] args) {
        String archivoFuente = "src/main/resources/gradient_map_src.psd";
        String archivoSalida = "src/main/resources/gradient_map_src_output.psd";

        try (PsdImage im = (PsdImage) Image.load(archivoFuente)) {
            // Agregar capa de ajuste de mapa de degradado.
            GradientMapLayer capa = im.addGradientMapAdjustmentLayer();
            capa.getGradientSettings().setReverse(true);

            im.save(archivoSalida);
        }

        // Verificar cambios guardados
        try (PsdImage im = (PsdImage) Image.load(archivoSalida)) {
            GradientMapLayer capaMapaDegradado = (GradientMapLayer) im.getLayers()[1];
            GradientFillSettings ajustesDegradado = (GradientFillSettings) capaMapaDegradado.getGradientSettings();

            assertAreEqual(0.0, ajustesDegradado.getAngle());
            assertAreEqual((short) 4096, ajustesDegradado.getInterpolation());
            assertAreEqual(true, ajustesDegradado.getReverse());
            assertAreEqual(false, ajustesDegradado.getAlignWithLayer());
            assertAreEqual(false, ajustesDegradado.getDither());
            assertAreEqual(GradientType.Linear, ajustesDegradado.getGradientType());
            assertAreEqual(100, ajustesDegradado.getScale());
            assertAreEqual(0.0, ajustesDegradado.getHorizontalOffset());
            assertAreEqual(0.0, ajustesDegradado.getVerticalOffset());
            assertAreEqual("Custom", ajustesDegradado.getGradientName());
        }
    }

    static void assertAreEqual(Object esperado, Object actual) {
        assertAreEqual(esperado, actual, "Los objetos no son iguales.");
    }

    static void assertAreEqual(Object esperado, Object actual, String mensaje) {
        if (!esperado.equals(actual)) {
            throw new IllegalArgumentException(mensaje);
        }
    }

PSDJAVA-629. [Formato AI] Agregar soporte de metadatos XPacket a AI formato

    public static void main(String[] args) {
        String archivoFuente = "src/main/resources/ai_one.ai";

        String claveHerramientaCreador = ":CreatorTool";
        String claveNPaginas = "xmpTPg:NPages";
        String claveUnidad = "stDim:unit";
        String claveAltura = "stDim:h";
        String claveAnchura = "stDim:w";

        String herramientaCreadorEsperada = "Adobe Illustrator CC 22.1 (Windows)";
        String nPaginasEsperadas = "1";
        String unidadEsperada = "Pixels";
        double alturaEsperada = 768;
        double anchuraEsperada = 1366;

        try (AiImage imagen = (AiImage) Image.load(archivoFuente)) {
            // Se agregaron metadatos Xmp.
            var metadatosXmp = imagen.getXmpData();

            assertIsNotNull(metadatosXmp);

            // Ahora podemos acceder a los paquetes Xmp de los archivos AI.
            var paqueteBasico = (XmpBasicPackage) metadatosXmp.getPackage(Namespaces.XmpBasic);
            XmpPackage paquete = metadatosXmp.getPackages()[4];
            // Y tenemos acceso al contenido de estos paquetes.
            var herramientaCreador = paqueteBasico.get_Item(claveHerramientaCreador).toString();
            var nPaginas = paquete.get_Item(claveNPaginas);
            var unidad = paquete.get_Item(claveUnidad);
            var altura = Double.parseDouble(paquete.get_Item(claveAltura).toString());
            var anchura = Double.parseDouble(paquete.get_Item(claveAnchura).toString());

            assertAreEqual(herramientaCreador, herramientaCreadorEsperada);
            assertAreEqual(nPaginas, nPaginasEsperadas);
            assertAreEqual(unidad, unidadEsperada);
            assertAreEqual(altura, alturaEsperada);
            assertAreEqual(anchura, anchuraEsperada);
        }
    }

    static void assertAreEqual(Object esperado, Object actual) {
        assertAreEqual(esperado, actual, "Los objetos no son iguales.");
    }

    static void assertAreEqual(Object esperado, Object actual, String mensaje) {
        if (!esperado.equals(actual)) {
            throw new IllegalArgumentException(mensaje);
        }
    }

    static void assertIsNotNull(Object objetoPrueba) {
        if (objetoPrueba == null) {
            throw new RuntimeException("El objeto de prueba es nulo.");
        }
    }

PSDJAVA-630. Implementar tipos de deformación Inflate, Squeeze y Twist

    String[] archivos = {"Twist", "Squeeze", "Squeeze_vert", "Inflate"};

    for (String prefijo : archivos) {
        String archivoFuente = "src/main/resources/" + prefijo + ".psd";
        String archivoSalida = "src/main/resources/" + prefijo + "_export.png";

        PsdLoadOptions opcionesCargaPsd = new PsdLoadOptions();
        opcionesCargaPsd.setAllowWarpRepaint(true);
        opcionesCargaPsd.setLoadEffectsResource(true);
        try (PsdImage imagenPsd = (PsdImage) Image.load(archivoFuente, opcionesCargaPsd)) {
            PngOptions opcionesPng = new PngOptions();
            opcionesPng.setColorType(PngColorType.TruecolorWithAlpha);
            imagenPsd.save(archivoSalida, opcionesPng);
        }
    }

PSDJAVA-631. Los modos Rgb y Lab no pueden contener menos de 3 canales y más de 4 canales en el archivo con capas de ArtBoard

    String archivoFuente = "src/main/resources/Rgb5Channels.psb";
    String archivoSalida = "src/main/resources/Rgb5Channels_output.psd";

    try (PsdImage imagen = (PsdImage) Image.load(archivoFuente)) {
        // Aquí no debería haber excepciones
        imagen.save(archivoSalida);
    }

PSDJAVA-632. El área de procesamiento superior debe ser positiva. (Parámetro ‘areaToProcess’) en el procesamiento de archivos específicos

    String archivoFuente = "src/main/resources/BANNERS_2_Intel-Gamer_psak.psd";
    String archivoSalida = "src/main/resources/BANNERS_2_Intel-Gamer_psak_out.psd";
    PsdLoadOptions opcionesCargaPsd = new PsdLoadOptions();
    opcionesCargaPsd.setLoadEffectsResource(true);
    opcionesCargaPsd.setAllowWarpRepaint(true);
    try (PsdImage imagen = (PsdImage) PsdImage.load(archivoFuente, opcionesCargaPsd)) {
        imagen.save(archivoSalida);
        // No debería haber excepción
    }

PSDJAVA-633. La imagen ampliada sobre el lienzo se recorta después de guardarla. Los datos se pierden pero la vista previa se ve correcta

    String archivoFuente = "src/main/resources/bigfile.psd";
    String archivoSalida = "src/main/resources/bigfile_output.psd";
    String imagenSalida = "src/main/resources/bigfile.png";

    PsdLoadOptions opcionesCarga = new PsdLoadOptions();
    opcionesCarga.setLoadEffectsResource(true);
    opcionesCarga.setUseDiskForLoadEffectsResource(true);

    try (var imagenPsd = (PsdImage) Image.load(archivoFuente, opcionesCarga)) {
        PsdOptions opcionesPsd = new PsdOptions();
        opcionesPsd.setCompressionMethod(CompressionMethod.RLE);
        // No debería haber errores aquí
        imagenPsd.save(archivoSalida, opcionesPsd);
    }

    try (var imagenPsd = (PsdImage) Image.load(archivoSalida, opcionesCarga)) {
        imagenPsd.resize(imagenPsd.getWidth() / 10, imagenPsd.getHeight() / 10);

        PngOptions opcionesPng = new PngOptions();
        opcionesPng.setColorType(PngColorType.TruecolorWithAlpha);
        // No debería haber errores aquí
        imagenPsd.save(imagenSalida, opcionesPng);
    }