Browse our Products

Aspose.PSD for Java 26.4 - Release Notes

KeySummaryCategory
PSDJAVA-844Implement rendering of Gradient with Smooth method.Feature
PSDJAVA-845Add support for a resource containing effects in a group layer.Bug
PSDJAVA-846PSD files with adjusted Hue/Saturation will throw the exception PsdImageArgumentException - Invalid Hue2 Resource data.Bug

Public API Changes

Added APIs:

  • M:com.aspose.psd.fileformats.psd.layers.fillsettings.GradientFillSettings.getInterpolationMethod
  • M:com.aspose.psd.fileformats.psd.layers.fillsettings.GradientFillSettings.setInterpolationMethod(long)
  • T:com.aspose.psd.fileformats.psd.layers.fillsettings.InterpolationMethod
  • F:com.aspose.psd.fileformats.psd.layers.fillsettings.InterpolationMethod.Classic
  • F:com.aspose.psd.fileformats.psd.layers.fillsettings.InterpolationMethod.Perceptual
  • F:com.aspose.psd.fileformats.psd.layers.fillsettings.InterpolationMethod.Linear
  • F:com.aspose.psd.fileformats.psd.layers.fillsettings.InterpolationMethod.Smooth
  • F:com.aspose.psd.fileformats.psd.layers.fillsettings.InterpolationMethod.Stripes
  • M:com.aspose.psd.fileformats.psd.layers.fillsettings.IGradientFillSettings.getInterpolationMethod
  • M:com.aspose.psd.fileformats.psd.layers.fillsettings.IGradientFillSettings.setInterpolationMethod(long)
  • M:com.aspose.psd.fileformats.psd.layers.layerresources.GdFlResource.getInterpolationMethod
  • M:com.aspose.psd.fileformats.psd.layers.layerresources.GdFlResource.setInterpolationMethod(long)
  • T:com.aspose.psd.fileformats.psd.layers.layerresources.IfxsResource
  • M:com.aspose.psd.fileformats.psd.layers.layerresources.IfxsResource.#ctor
  • F:com.aspose.psd.fileformats.psd.layers.layerresources.IfxsResource.TypeToolKey
  • M:com.aspose.psd.fileformats.psd.layers.layerresources.GrdmResource.getInterpolationMethod
  • M:com.aspose.psd.fileformats.psd.layers.layerresources.GrdmResource.setInterpolationMethod(long)
  • M:com.aspose.psd.fileformats.psd.layers.fillsettings.GradientMapSettings.getInterpolationMethod
  • M:com.aspose.psd.fileformats.psd.layers.fillsettings.GradientMapSettings.setInterpolationMethod(long)

Removed APIs:

  • None

Usage examples:

PSDJAVA-844. Implement rendering of Gradient with Smooth method.

    public static void main(String[] args) throws IOException {
        String sourceFile = "src/main/resources/GradientOverlay.psd";
        String outputFile = "src/main/resources/output_GradientOverlay.psd";
        String outputFilePng = "src/main/resources/output_GradientOverlay.png";

        var srcMethod = InterpolationMethod.Linear;
        var newMethod = InterpolationMethod.Smooth;

        var opt = new PsdLoadOptions();
        opt.setLoadEffectsResource(true);

        try (var image = (PsdImage) Image.load(sourceFile, opt)) {
            // Read
            var effect = (GradientOverlayEffect) image.getLayers()[1].getBlendingOptions().getEffects()[0];
            var gradientSettings = effect.getSettings();
            assertAreEqual(srcMethod, gradientSettings.getInterpolationMethod());

            // Change
            gradientSettings.setInterpolationMethod(newMethod);

            PngOptions pngOptions = new PngOptions();
            pngOptions.setColorType(PngColorType.TruecolorWithAlpha);

            image.save(outputFile);
            image.save(outputFilePng, pngOptions);
        }

        // Check saved data
        try (var image = (PsdImage) Image.load(outputFile, opt)) {
            var effect = (GradientOverlayEffect) image.getLayers()[1].getBlendingOptions().getEffects()[0];
            var gradientSettings = effect.getSettings();

            assertAreEqual(newMethod, gradientSettings.getInterpolationMethod());
        }
    }

    private static void assertAreEqual(Object expected, Object actual) {
        assertAreEqual(expected, actual, "Objects are not equal.");
    }

    private static void assertAreEqual(Object expected, Object actual, String message) {
        if (!expected.equals(actual)) {
            throw new IllegalArgumentException(message);
        }
    }

PSDJAVA-845. Add support for a resource containing effects in a group layer.

    String sourceFile = "src/main/resources/example.psd";
    String outputFile = "src/main/resources/export.psd";

    var loadOptions = new PsdLoadOptions();
    loadOptions.setLoadEffectsResource(true);

    try (var psdImage = (PsdImage) Image.load(sourceFile, loadOptions)) {
        // Example has 2 group layers with effects
        // Group layer with one effect
        LayerGroup layerGroupOne = (LayerGroup) psdImage.getLayers()[2];

        // Group layer with many effects
        LayerGroup layerGroupMany = (LayerGroup) psdImage.getLayers()[5];

        // Get the number of effects and verify their quantity
        int effectCountOne = layerGroupOne.getBlendingOptions().getEffects().length;
        int effectCountMany = layerGroupMany.getBlendingOptions().getEffects().length;

        // One effect in the group layer is in resource 'IfxsResource'
         IfxsResource ifxsResource = (IfxsResource) layerGroupOne.getResources()[0];

        // Two or more effects in a group layer are in resource 'ImfxResource'
        ImfxResource imfxResource = (ImfxResource) layerGroupMany.getResources()[0];

        // Add a third shadow to a group layer with multiple effects
        layerGroupMany.getBlendingOptions().addDropShadow();

        psdImage.save(outputFile);
    }

PSDJAVA-846. PSD files with adjusted Hue/Saturation will throw the exception PsdImageArgumentException - Invalid Hue2 Resource data.

    var hue2 = new Hue2Resource(new byte[136]);