Aspose.Imaging for Java 22.2 - Release notes
Competitive features:
- Speed up resize method in Aspose.Imaging
- Support pixel perfect text alignment
Key | Summary | Category |
---|---|---|
IMAGINGJAVA-8028 | Speed up resize method in Aspose.Imaging | Feature |
IMAGINGJAVA-8021 | Support pixel perfect text alignment | Feature |
IMAGINGJAVA-8037 | Display the correct exception instead of: “Object reference not set to an instance of an object.” exception. | Enhancement |
IMAGINGJAVA-8025 | Improve YCbCr to RGb subsampling test coverage for Jpeg2000 | Enhancement |
IMAGINGJAVA-8023 | Fix bug in EMF with CacheData | Enhancement |
IMAGINGJAVA-8022 | Can’t load CDR Image | Enhancement |
IMAGINGJAVA-8019 | “Specified color model ‘Invalid’ is not supported.” exception when open CMX file | Enhancement |
IMAGINGJAVA-8016 | Optimize Gif to WebP export | Enhancement |
IMAGINGJAVA-8015 | Can’t convert WMZ to JPG | Enhancement |
IMAGINGJAVA-7888 | Occasionally an exception occurs when running Image.save in multiple threads | Enhancement |
Public API changes:
Added APIs:
Please see corresponding cumulative API changes for Aspose.Imaging for .NET 22.2 version
Removed APIs:
Please see corresponding cumulative API changes for Aspose.Imaging for .NET 22.2 version
Usage Examples:
IMAGINGJAVA-8037 Display the correct exception instead of: “Object reference not set to an instance of an object.” exception.
String fileName = "áóêëåò.cmx";
String baseFolder = "D:\\";
String inputFilePath = baseFolder + fileName;
String outputFilePath = inputFilePath + ".png";
try (Image image = Image.load(inputFilePath))
{
image.save(outputFilePath, new PngOptions());
}
IMAGINGJAVA-8028 Speed up resize method in Aspose.Imaging
class Stopwatch
{
private long startTime;
private long endTime;
public void start()
{
startTime = System.nanoTime();
}
public void stop()
{
endTime = System.nanoTime();
}
long getElapsedMilliseconds()
{
return (endTime - startTime) / 1000000;
}
}
IMAGINGJAVA-8025 Improve YCbCr to RGb subsampling test coverage for Jpeg2000
String[] files = new String[]
{
"resultyuv420_watermark.jp2", "resultyuv422_watermark.jp2",
"resultyuv444_watermark.jp2"
};
for (String file : files)
{
try (RasterImage image = (RasterImage)Image.load(file))
{
image.save(
file + ".png",
new PngOptions() {{ setColorType(PngColorType.TruecolorWithAlpha); }});
}
}
IMAGINGJAVA-8023 Fix bug in EMF with CacheData
try (EmfImage image = (EmfImage)Image.load("D:\\data.emf"))
{
image.cacheData();
image.save("D:\\1.pdf", new PdfOptions());
}
IMAGINGJAVA-8022 Can’t load CDR Image
String baseFolder = "D:\\";
String fileName = "admission formr Daniyal_2.cdr";
String inputFilePath = baseFolder + fileName;
String outputFilePath = inputFilePath + ".png";
try (CdrImage image = (CdrImage)Image.load(inputFilePath))
{
image.save(outputFilePath, new PngOptions());
}
IMAGINGJAVA-8021 Support pixel perfect text alignment
String baseFolder = "D:\\test\\";
String[] alignments = new String[] {"Left", "Center", "Right"};
FontSettings.reset();
FontSettings.setFontsFolder(baseFolder + "fonts");
FontSettings.updateFonts();
for (String alignment : alignments)
{
drawString(baseFolder, alignment);
}
import com.aspose.imaging.*;
import com.aspose.imaging.brushes.SolidBrush;
import com.aspose.imaging.imageoptions.PngOptions;
import com.aspose.imaging.sources.FileCreateSource;
private void drawString(String baseFolder, String align)
{
String fileName = "output_" + align + ".png";
String outputFileName = baseFolder + fileName;
String[] fontNames = new String[]
{
"Arial", "Times New Roman", "Bookman Old Style", "Calibri", "Comic Sans MS", "Courier New", "Microsoft Sans Serif", "Tahoma",
"Verdana", "Proxima Nova Rg"
};
float[] fontSizes = new float[]{10f, 22f, 50f, 100f};
int width = 3000;
int height = 3500;
//Create an instance of PngOptions and set its various properties
PngOptions pngOptions = new PngOptions();
//Set the Source for PngOptions
pngOptions.setSource(new FileCreateSource(outputFileName));
//Create an instance of Image
try (Image image = Image.create(pngOptions, width, height))
{
//Create and initialize an instance of Graphics class
Graphics graphics = new Graphics(image);
//Clear Graphics surface
graphics.clear(Color.getWhite());
//Create a SolidBrush object and set its various properties
SolidBrush brush = new SolidBrush();
brush.setColor(Color.getBlack());
float x = 10;
int lineX = 0;
float y = 10;
float w = width - 20;
Pen pen = new Pen(Color.getRed(), 1);
int alignment = StringAlignment.Near;
switch (align)
{
case "Left":
// alignment = StringAlignment.Near;
lineX = Math.round(x);
break;
case "Center":
alignment = StringAlignment.Center;
lineX = Math.round(x + w / 2f);
break;
case "Right":
alignment = StringAlignment.Far;
lineX = (int) (x + w);
break;
}
StringFormat stringFormat = new StringFormat(StringFormatFlags.ExactAlignment);
stringFormat.setAlignment(alignment);
for (String fontName : fontNames)
{
for (float fontSize : fontSizes)
{
Font font = new Font(fontName, fontSize);
String text = String.Format("This is font: {0}, size:{1}", fontName, fontSize);
SizeF s = graphics.measureString(text, font, SizeF.getEmpty(), null);
graphics.drawString(text, font, brush, new RectangleF(x, y, w, s.getHeight()), stringFormat);
y += s.getHeight();
}
graphics.drawLine(pen, new Point((int) (x), (int) y), new Point((int) (x + w), (int) y));
}
graphics.drawLine(pen, new Point(lineX, 0), new Point(lineX, (int) y));
// save all changes.
image.save();
}
}
IMAGINGJAVA-8019 “Specified color model ‘Invalid’ is not supported.” exception when open CMX file
String fileName = "DRAW0003.CMX";
String baseFolder = "D:\\";
String inputFilePath = baseFolder + fileName;
String outputFilePath = inputFilePath + ".png";
try (Image image = Image.load(inputFilePath))
{
image.save(outputFilePath, new PngOptions());
}
IMAGINGJAVA-8016 Optimize Gif to WebP export
String fileName = "test.gif";
String basePath = "D:\\";
String inputFilePath = basePath + fileName;
String outputFilePath = inputFilePath + ".webp";
try (Image image = Image.load(inputFilePath))
{
image.save(outputFilePath, new WebPOptions() {{ setFullFrame(true); }} );
}
IMAGINGJAVA-8015 Can’t convert WMZ to JPG
String baseFolder = "D:\\";
String fileName = "image001.wmz";
String inputFilePath = baseFolder + fileName;
String outputFilePath = inputFilePath + ".jpg";
try (CdrImage image = (CdrImage)Image.load(inputFilePath))
{
image.save(outputFilePath, new JpegOptions());
}
IMAGINGJAVA-7888 Occasionally an exception occurs when running Image.save in multiple threads
using Aspose.Imaging.ImageOptions;
using Aspose.Imaging;
using System.IO;
using System.Threading;
using System.Collections.Generic;
using System;
string inputDirPath = @"C:\Data\input";
string outputDirPath = @"C:\Data\output";
// Repeat until error
for (int i = 0; i < 10; i++)
{
ConvertFiles(inputDirPath, outputDirPath);
// If no error, clear output files.
foreach (string outputFile in System.IO.Directory.GetFiles(outputDirPath))
{
File.Delete(outputFile);
}
}