Aspose.Imaging for JAVA 21.8 - Release notes

Competitive features:

Key Summary Category
IMAGINGJAVA-7887 Incorrect number of cycles in exported GIF animation Enhancement
IMAGINGJAVA-7886 Cannot set number of cycles in exported GIF animation Enhancement
IMAGINGJAVA-7884 Incorrect export from CDR to PSD Enhancement
IMAGINGJAVA-7877 Particular CDR file cannot be opened/rasterized Enhancement
IMAGINGJAVA-7875 Image saving failed when converting WMF Enhancement
IMAGINGJAVA-7874 Text in saved EMF is garbled Enhancement
IMAGINGJAVA-7872 Measure String for Graphics.DrawString method Enhancement
IMAGINGJAVA-7871 Backport of Aspose.PSD to Aspose.Imaging Enhancement
IMAGINGJAVA-7852 Memory leak when saving EPS to PSD Enhancement
IMAGINGJAVA-7851 Improve original (prior to Version 2.0) TGA file format support Enhancement
IMAGINGJAVA-7850 Exception on exporting DCM to APNG Enhancement
IMAGINGJAVA-7814 Exception on loading image Enhancement
IMAGINGJAVA-7772 Convert EMF to PNG will generate too many font files under TempFontsGraphics Enhancement
IMAGINGJAVA-628 Calling resize method of SvgImage class is throwing exception Enhancement

Public API changes:

Added APIs:

Please see corresponding cumulative API changes for Aspose.Imaging for .NET 21.8 version

Removed APIs:

Please see corresponding cumulative API changes for Aspose.Imaging for .NET 21.8 version

Usage Examples:

IMAGINGJAVA-7887 Incorrect number of cycles in exported GIF animation

String path = "ezgif.com-gif-maker(1)___.gif";
try (GifImage image = (GifImage)Image.load(path))
{
    image.save("output.gif", new GifOptions() {{ setLoopsCount(4); }});
}

IMAGINGJAVA-7886 Cannot set number of cycles in exported GIF animation

String path = "ezgif.com-gif-maker(1)___.gif";
try (GifImage image = (GifImage)Image.load(path))
{
      System.out.println(image.getLoopsCount() == 7 ? "OK" : "False");
      image.setFrameTime(2000);
      ((GifFrameBlock)image.getPages()[0]).setFrameTime(200);
      image.save("output.gif", new GifOptions() {{ setLoopsCount(4); }});
}

IMAGINGJAVA-7884 Incorrect export from CDR to PSD

String baseFolder = "D:\\";
String fileName = "yo calender.CDR";
String inputFilePath = baseFolder + fileName;
String outputFilePath = inputFilePath + ".psd";
try (CdrImage image = (CdrImage)Image.load(inputFilePath))
{
    image.save(outputFilePath, new PsdOptions()
    {{
        setVectorRasterizationOptions(new CdrRasterizationOptions() 
        {{
              setPositioning(PositioningTypes.Relative);
        }});
    }});
}

IMAGINGJAVA-7877 Particular CDR file cannot be opened/rasterized

String baseFolder = "D:\\";
String fileName = "LETTER HEAD.cdr";
String inputFilePath = baseFolder + fileName;
String outputFilePath = inputFilePath + ".png";
try (CdrImage image = (CdrImage)Image.load(inputFilePath))
{
    image.save(outputFilePath, new PngOptions()
    {{
        setVectorRasterizationOptions(new CdrRasterizationOptions()
        {{
             setPositioning(PositioningTypes.DefinedByDocument);
        }});
    }});
}

IMAGINGJAVA-7875 Image saving failed when converting WMF

try (Image image = Image.load("1480 HANGER FORM AND DIE SCHEMATIC.WMF"))
{
	PngOptions saveOptions = new PngOptions();
	image.save("output.png", saveOptions);
}

try (Image image = Image.load("1480 HANGER FORM AND DIE SCHEMATIC.WMF"))
{
	SvgOptions saveOptions = new SvgOptions();
	image.save("output.svg", saveOptions);
}

IMAGINGJAVA-7874 Text in saved EMF is garbled

String baseFolder = "D:\\";
String inputFileName = baseFolder + "original.emf";
String outputFileName = baseFolder + "saved.emf";
try (Image image = Image.load(inputFileName))
{
     image.save(outputFileName);
}

IMAGINGJAVA-7872 Measure String for Graphics.DrawString method

try (Image backgoundImage = Image.load("image1.png"))
{
    Graphics gr = new Graphics(backgoundImage);
    com.aspose.imaging.StringFormat format = new com.aspose.imaging.StringFormat();
    com.aspose.imaging.SizeF size = gr.measureString("Test", new com.aspose.imaging.Font("Arial",10), com.aspose.imaging.SizeF.getEmpty(), format);
    float expectedWidth = 31.15668f;
    Assert.that(Math.abs(size.getWidth() - expectedWidth) <= 1.0f);
    float expectedHeight = 16.5625f;
    Assert.that(Math.abs(size.getHeight() - expectedHeight) <= 1.0f);
}

IMAGINGJAVA-7871 Backport of Aspose.PSD to Aspose.Imaging

// This code should successfully export a PSD image
try (JpegImage image = (JpegImage)Image.load("3.jpg"))
{
	image.save("output.psd", new PsdOptions());
}

// This code should throw an ImageLoadException 
try (Image image = Image.load("output.psd"))
{

}

IMAGINGJAVA-7852 Memory leak when saving EPS to PSD

String inputFilePath = "file_2.eps";
String outputFilePath = inputFilePath + ".psd";
while (true)
{
    try (Image image = Image.load(inputFilePath))
    {
         try (PsdOptions options = new PsdOptions())
         {
               try (EpsRasterizationOptions rasterizationOptions = new EpsRasterizationOptions())
               {
                   rasterizationOptions.setPageWidth(6633);// image.Size.Width;
                   rasterizationOptions.setPageHeight(6633);// image.Size.Height;
                   options.setVectorRasterizationOptions(rasterizationOptions);
                   image.save(outputFilePath, options);
               }
         }
   }

   Thread.sleep(300);
}

IMAGINGJAVA-7851 Improve original (prior to Version 2.0) TGA file format support

try (Image image = Image.load("envanter.tga"))
{
    image.save("output.png", new PngOptions());
}

IMAGINGJAVA-7850 Exception on exporting DCM to APNG

String inputFilePath = "1.3.12.2.1107.5.3.33.1214.11.202105032002480765.dcm";
String outputFilePath = inputFilePath + ".png";

try (Image image = Image.load(inputFilePath))
{
	image.save(outputFilePath, new ApngOptions() {{ setDefaultFrameTime(300); }});
}

IMAGINGJAVA-7814 Exception on loading image

try (Image image = Image.load("sankey1a.png"))
{
    image.save("sankey1a.png.jpg", new JpegOptions());
}

IMAGINGJAVA-7772 Convert EMF to PNG will generate too many font files under TempFontsGraphics

File f = new File(System.getProperty("java.io.tmpdir") + "/TempFontsGraphics");
if (!f.exists())
	f.mkdirs();

int wasFiles = 0;

for (int i = 0; i < 20; i++)
{
	PngOptions pngOpts = new PngOptions();
	try (Image image = Image.load("image.emf"))
	{
		image.save("image.emf.png", new PngOptions());
	}
	
	if (i == 0)
	{
		wasFiles = f.list().length;
	}
}

int nowFiles = f.list().length;
Assert.assertEquals(wasFiles, nowFiles, "Incorrect work of the font subsystem!");

IMAGINGJAVA-628 Calling resize method of SvgImage class is throwing exception

try (Image svg = Image.load("gump-bench.svg"))
{
	svg.resize(svg.getWidth() / 2, svg.getHeight() / 2);
	svg.save("gump-bench-resized.svg");
}