Aspose.Imaging for Java 20.10 - Release notes

Key Summary Category
IMAGINGJAVA-1880 Improve export of multi-page vector formats to multi-page raster formats Feature
IMAGINGJAVA-1872 Support of resize operation for Interlaced GIF images Feature
IMAGINGJAVA-1881 IndexOutOfRangeExceptions when exporting JPEG YCbCr to PNG Grayscale Enhancement
IMAGINGJAVA-1879 Gif to Png export adds transparent areas when not needed Enhancement
IMAGINGJAVA-1878 Aspose.Imaging 20.7: Saving each frame from particular tiff file to png produces incorrect images Enhancement
IMAGINGJAVA-1867 Raster images exports to Html5 Canvas with the wrong scale Enhancement
IMAGINGJAVA-1866 Exception : Array dimensions exceeded supported range on working with CDR file Enhancement
IMAGINGJAVA-1865 Aspose.Imaging 20.8: Saving particular ODG file to PNG raises exception Enhancement
IMAGINGJAVA-1864 File is corrupted or damaged exception was thrown when rendering TIFF document Enhancement
IMAGINGJAVA-1863 Watermark is incorrect when GIF image loaded and saved Enhancement
IMAGINGJAVA-1862 Incorrect output when exporting EMF to PNG Enhancement
IMAGINGJAVA-1861 Support of convertion for 16 bpp RGBA 5551 BMP to 32 bpp RGBA PNG Enhancement
IMAGINGJAVA-1858 Index was outside the bounds of the array exception when saving EMF Enhancement
IMAGINGJAVA-1339 Aspose.Imaging Emf save MSPaint compatibility Enhancement

Public API changes:

Added APIs:

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

Removed APIs:

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

Java specific

Method    com.aspose.imaging.FontSettings.getFontsSources
Method    com.aspose.imaging.FontSettings.useJavaFontEngine(boolean)
Method    com.aspose.imaging.FontSettings.isJavaFontEngineUsed
Method    com.aspose.imaging.FontSettings.resetFontSources
Method    com.aspose.imaging.FontSettings.findFont(java.lang.String,int,int)
Method    com.aspose.imaging.FontSettings.getAllFonts
Method    com.aspose.imaging.FontSettings.addFontSubstitutes(java.lang.String,java.lang.String[])
Method    com.aspose.imaging.FontSettings.getFontSubstitutes(java.lang.String)
Method    com.aspose.imaging.FontSettings.setFontSubstitutes(java.lang.String,java.lang.String[])
Method    com.aspose.imaging.FontSettings.findFont(java.util.Map)

Usage Examples:

IMAGINGJAVA-1881 IndexOutOfRangeExceptions when exporting JPEG YCbCr to PNG Grayscale

try (Image image = Image.load("source.jpg"))
{
    image.save("output.png", new PngOptions() {{ setColorType(PngColorType.Grayscale); }});
}

IMAGINGJAVA-1880 Improve export of multi-page vector formats to multi-page raster formats

// Aspose.Imaging allows you to specify rasterization options for each page during the export. 
// The following source code sample demonstrates how to export multi-page CMX image to TIFF format:

try (VectorMultipageImage image = (VectorMultipageImage)Image.load("MultiPage2.cmx"))
{
	// Create page rasterization options
	VectorRasterizationOptions[] pageOptions = createPageOptions(image);

	// Create TIFF options
	TiffOptions options = new TiffOptions(TiffExpectedFormat.TiffDeflateRgb);
	MultiPageOptions multiPageOptions = new MultiPageOptions();
	multiPageOptions.setPageRasterizationOptions(pageOptions);
	options.setMultiPageOptions(multiPageOptions);

	// Export image to TIFF format
	image.save("MultiPage2.cmx.tiff", options);
}

private static <TOptions extends VectorRasterizationOptions> VectorRasterizationOptions[] createPageOptions(Class<TOptions> type, VectorMultipageImage image)
            throws InstantiationException, IllegalAccessException
{
	// Create page rasterization options for each page in the image
	List<VectorRasterizationOptions> ret = new LinkedList<VectorRasterizationOptions>();
	for (Image page : image.getPages())
	{
		ret.add(createPageOptions(type, page.getSize()));
	}
	return ret.toArray(new VectorRasterizationOptions[0]);
}

private static <TOptions extends VectorRasterizationOptions> VectorRasterizationOptions createPageOptions(Class<TOptions> type, Size pageSize)
		throws IllegalAccessException, InstantiationException
{
	// Create the instance of rasterization options
	TOptions options = type.newInstance();

	// Set the page size
	options.setPageSize(Size.to_SizeF(pageSize));
	return options;
}

### Export CDR image to PDF format
The following source code sample shows you how to export CDR image to PDF format:

try (VectorMultipageImage image = (VectorMultipageImage)Image.load("MultiPage2.cdr"))
{
	// Create page rasterization options
	VectorRasterizationOptions[] pageOptions = createPageOptions(CdrRasterizationOptions.class, image);

	// Create PDF options
	PdfOptions options = new PdfOptions();
	MultiPageOptions multiPageOptions = new MultiPageOptions();
	multiPageOptions.setPageRasterizationOptions(pageOptions);
	options.setMultiPageOptions(multiPageOptions);

	// Export image to PDF format
	image.save("MultiPage2.cdr.pdf", options);
}

IMAGINGJAVA-1879 Gif to Png export adds transparent areas when not needed

try (GifImage image = (GifImage)Image.load("2086.gif"))
{
	PngOptions pngOptions = new PngOptions();
	pngOptions.setFullFrame(true);
	pngOptions.setColorType(PngColorType.Truecolor);
	image.getPages()[1].save("Frame.png", pngOptions);
}

IMAGINGJAVA-1878 Aspose.Imaging 20.7: Saving each frame from particular tiff file to png produces incorrect images

try (TiffImage tiff = (TiffImage)Image.load("Camping.tiff"))
{
	int i = 0;
	for (TiffFrame frame : tiff.getFrames())
	{
		frame.save(String.format("converted-%d.png", ++i), new PngOptions());
	}
}

IMAGINGJAVA-1872 Support of resize operation for Interlaced GIF images

try (Image image = Image.load("cat_interlaced.gif"))
{
    // Perform resize operation
    image.resizeHeightProportionally(400, ResizeType.HighQualityResample);

    // Export image to any raster format
    image.save("cat_resized.png", new PngOptions());
}

IMAGINGJAVA-1867 Raster images exports to Html5 Canvas with the wrong scale

for (String fileName : new String[]{ "Progressive.png", "cat.jpg" })
{
	try (Image image = Image.load(fileName))
	{
		image.save(fileName + ".html", new Html5CanvasOptions());
	}
}

IMAGINGJAVA-1866 Exception : Array dimensions exceeded supported range on working with CDR file

String[] files = new String[] {"audi_icons_13.2.cdr", "laundry card curved.cdr", "Revised Creamy Cake Company 7x7x5inch.cdr", "royal.cdr"};
String baseFolder = "D:\\";
for (String fileName : files)
{
   String inputFilePath = baseFolder + fileName;
   String outputFilePath = inputFilePath + ".pdf";
   try (CdrImage image = (CdrImage) Image.load(inputFilePath))
   {
      image.save(outputFilePath, new PdfOptions());
   }
}

IMAGINGJAVA-1865 Aspose.Imaging 20.8: Saving particular ODG file to PNG raises exception

String baseFolder = "D:\\";
String inputFile = "abrak_2.odg";
String inputFileName = baseFolder + inputFile;
String outputFileName = inputFileName + ".png";
try (Image image = Image.load(inputFileName))
{
    image.save(outputFileName, new PngOptions());
}

IMAGINGJAVA-1864 File is corrupted or damaged exception was thrown when rendering TIFF document

try (Image image = Image.load("marveshja1.tiff"))
{
    image.save("marveshja1.png", new PngOptions());
}

IMAGINGJAVA-1863 Watermark is incorrect when GIF image loaded and saved

try (Image image = Image.load("2086.gif"))
{
    image.save("Result.gif");
}

IMAGINGJAVA-1862 Incorrect output when exporting EMF to PNG

String file = "MultiPage.cdr.emf";
String baseFolder = "D:\\";
String inputFileName = baseFolder + file;
String outputFileName = baseFolder + file + ".png";
try (Image image = Image.load(inputFileName))
{
	PngOptions saveOptions = new PngOptions();
	saveOptions.setVectorRasterizationOptions(new EmfRasterizationOptions());
	saveOptions.getVectorRasterizationOptions().setPageSize(Size.to_SizeF(image.getSize()));
	image.save(outputFileName, saveOptions);
}

IMAGINGJAVA-1861 Support of convertion for 16 bpp RGBA 5551 BMP to 32 bpp RGBA PNG

try (Image image = Image.load("tiger2.bmp"))
{
	PngOptions pngOptions = new PngOptions();
	pngOptions.setColorType(com.aspose.imaging.fileformats.png.PngColorType.TruecolorWithAlpha);
	image.save("tiger2.bmp.png", pngOptions);
}

IMAGINGJAVA-1858 Index was outside the bounds of the array exception when saving EMF

String baseFolder = "D:\\";
String file = "sample.emf";
String inputFileName = baseFolder + file;
String outputFileName = inputFileName + ".png";
try (Image image = Image.load(inputFileName))
{
   image.save(outputFileName, new PngOptions());
}

IMAGINGJAVA-1339 Aspose.Imaging Emf save MSPaint compatibility

Image image = Image.load("1.emf");
try
{
	image.save("out.emf");
}
finally
{
	image.close();
}