Aspose.Imaging for Java 22.11 - Release notes

Competitive features:

  • Integration Aspose.Fonts into Aspose.Imaging
  • Reworked memory allocation management - the shared memory approach was replaced by a buffered file cache and it resolves the issue of abandoned temporary files
Key Summary Category
IMAGINGJAVA-8291 Integration Aspose.Fonts into Aspose.Imaging Feature
IMAGINGJAVA-8290 Emf to PNG not properly converted Enhancement
IMAGINGJAVA-8289 Cannot load WEBP image Enhancement
IMAGINGJAVA-8284 Cannot convert the DICOM image to APNG Enhancement
IMAGINGJAVA-8280 Fix Emf formulas rasterization Enhancement
IMAGINGJAVA-8267 Cannot convert EMF to SVG Enhancement
IMAGINGJAVA-8266 CDR to JPG conversion error Enhancement

Public API changes:

Added APIs:

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

Removed APIs:

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

Usage Examples:

IMAGINGJAVA-8291 Integration Aspose.Fonts into Aspose.Imaging

This example demonstrates the possibility of direct access to the character index by bypassing the Unicode table.
This feature is supported by the Emf format.
Here the line: *text.getWEmrText().setOptions(EmfExtTextOutOptions.ETO_GLYPH_INDEX);*
Indicates that characters are accessed via GlyphIndex

**The font must be the one specified such as in the example. Because glyphIndex in each font corresponds to a different character.**

java
final String baseFolder = "D:\\Test\\";
final String fontName = "Cambria Math";
final int symbolCount = 40; //count symbols in the example
final int startIndex = 2001; //start GlyphIndex for example
String fontFolder = baseFolder + "Fonts"; //font folder
FontSettings.setFontsFolder(fontFolder);

//Fill GlyphIndex buffer
int[] glyphCodes = new int[symbolCount];
for (int i = 0; i < symbolCount; i++)
{
	glyphCodes[i] = startIndex + i;
}

//create emf
try (EmfImage emf = new EmfImage(700, 100))
{
	//font record
	EmfExtCreateFontIndirectW font = new EmfExtCreateFontIndirectW();
	font.setElw(new EmfLogFont());
	font.getElw().setFacename(fontName);
	font.getElw().setHeight(30);

	//text record
	EmfExtTextOutW text = new EmfExtTextOutW();
	text.setWEmrText(new EmfText());
	text.getWEmrText().setOptions(EmfExtTextOutOptions.ETO_GLYPH_INDEX); //symbols index as GlyphIndex
	text.getWEmrText().setChars(symbolCount); //string length
	text.getWEmrText().setGlyphIndexBuffer(glyphCodes); //index buffer

	emf.getRecords().add(font); //add font
	final EmfSelectObject emfSelectObject = new EmfSelectObject();
	emfSelectObject.setObjectHandle(0);
	emf.getRecords().add(emfSelectObject); //select font
	emf.getRecords().add(text); //add text
	emf.save(baseFolder + "result.png"); //rendering
}

IMAGINGJAVA-8290 Emf to PNG not properly converted

try (Image image = Image.load("D:\\test-1.emf"))
{
    image.save("D:\\test-1.emf.png");
}

IMAGINGJAVA-8284 Cannot convert the DICOM image to APNG

try (Image image = Image.load("input.dcm"))
{
    image.save("output.png", new ApngOptions());
}

IMAGINGJAVA-8267 Cannot convert EMF to SVG

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

IMAGINGJAVA-8266 CDR to JPG conversion error

try (Image image = Image.load("BANNER HAFLAH RA 2022.cdr"))
 {
     image.save("result.png", new PngOptions()
     {{
         setVectorRasterizationOptions(new CdrRasterizationOptions()
						 {{
							 setPositioning(PositioningTypes.DefinedByDocument);
						 }});
     }});
 }