Browse our Products

Aspose.Imaging for .NET 25.11 - Release notes

Competitive features:

  • Implement the ability to support filters in rendering
KeySummaryCategory
IMAGINGNET-7695Implement the ability to support filters in renderingFeature
IMAGINGNET-7804Implement Exif Loader in a public APIEnhancement
IMAGINGNET-7794Image.resize throws ‘Invalid jpeg marker’ exceptionEnhancement
IMAGINGNET-7738Loaded DNG image is treated as TIFF.Enhancement
IMAGINGNET-7737Reduce memory consumption during CDR to PDF conversionEnhancement
IMAGINGNET-7673RasterImage.Blend does not support negative coordinates for a left-top positionEnhancement
IMAGINGNET-6339Speed up Jpeg2000 processingEnhancement

Public API changes:

Added APIs:

Class Aspose.Imaging.ImageFilters.FilterOptions.BlendingMode

Class Aspose.Imaging.ImageFilters.FilterOptions.ImageBlendingFilterOptions

Field/Enum Aspose.Imaging.ImageFilters.FilterOptions.BlendingMode.Color

Field/Enum Aspose.Imaging.ImageFilters.FilterOptions.BlendingMode.ColorBurn

Field/Enum Aspose.Imaging.ImageFilters.FilterOptions.BlendingMode.ColorDodge

Field/Enum Aspose.Imaging.ImageFilters.FilterOptions.BlendingMode.Darken

Field/Enum Aspose.Imaging.ImageFilters.FilterOptions.BlendingMode.Difference

Field/Enum Aspose.Imaging.ImageFilters.FilterOptions.BlendingMode.Exclusion

Field/Enum Aspose.Imaging.ImageFilters.FilterOptions.BlendingMode.HardLight

Field/Enum Aspose.Imaging.ImageFilters.FilterOptions.BlendingMode.Hue

Field/Enum Aspose.Imaging.ImageFilters.FilterOptions.BlendingMode.Lighten

Field/Enum Aspose.Imaging.ImageFilters.FilterOptions.BlendingMode.Luminosity

Field/Enum Aspose.Imaging.ImageFilters.FilterOptions.BlendingMode.Multiply

Field/Enum Aspose.Imaging.ImageFilters.FilterOptions.BlendingMode.Normal

Field/Enum Aspose.Imaging.ImageFilters.FilterOptions.BlendingMode.Overlay

Field/Enum Aspose.Imaging.ImageFilters.FilterOptions.BlendingMode.Saturation

Field/Enum Aspose.Imaging.ImageFilters.FilterOptions.BlendingMode.Screen

Field/Enum Aspose.Imaging.ImageFilters.FilterOptions.BlendingMode.SoftLight

Method Aspose.Imaging.Exif.ExifData.#ctor(System.Byte[])

Method Aspose.Imaging.Exif.ExifData.GetTagValue(Aspose.Imaging.Exif.ExifProperties)

Method Aspose.Imaging.ImageFilters.FilterOptions.ImageBlendingFilterOptions.#ctor

Property Aspose.Imaging.Exif.ExifData.XResolution

Property Aspose.Imaging.Exif.ExifData.YResolution

Property Aspose.Imaging.ImageFilters.FilterOptions.ConvolutionFilterOptions.BordersProcessing

Property Aspose.Imaging.ImageFilters.FilterOptions.ConvolutionFilterOptions.IgnoreAlpha

Property Aspose.Imaging.ImageFilters.FilterOptions.ImageBlendingFilterOptions.BlendingMode

Property Aspose.Imaging.ImageFilters.FilterOptions.ImageBlendingFilterOptions.Image

Property Aspose.Imaging.ImageFilters.FilterOptions.ImageBlendingFilterOptions.Opacity

Property Aspose.Imaging.ImageFilters.FilterOptions.ImageBlendingFilterOptions.Position

Removed APIs:

Usage Examples:

IMAGINGNET-7804 Implement Exif Loader in a public API

const int expectedXResolution = 72;
 const int expectedYResolution = 72;
 const string expectedModel = "SM-A326B";
 const ushort modelTag = 272;
 var inputFilePath = "exif_heic.dat";
 var bytes = File.ReadAllBytes(inputFilePath);
 var exif = new ExifData(bytes);
 var xResolution = exif.XResolution;
 var yResolution = exif.YResolution;
 var model = (string)exif.GetTagValue((ExifProperties)modelTag).Value;
 Assert.AreEqual(expectedXResolution, xResolution);
 Assert.AreEqual(expectedYResolution, yResolution);
 Assert.AreEqual(expectedModel, model);


{

IMAGINGNET-7794 Image.resize throws ‘Invalid jpeg marker’ exception

using (Image image = Image.Load("progressive.jpg"))
{
   image.Resize(250, 30);
}

{

IMAGINGNET-7738 Loaded DNG image is treated as TIFF.

using (Image image = Image.Load("image.dng"))
{
}

{

IMAGINGNET-7737 Reduce memory consumption during CDR to PDF conversion

long freeMem = GC.GetTotalMemory(false);
long freeMem2;
LoadOptions loadOptions = new LoadOptions();
loadOptions.BufferSizeHint = 300;
using (CdrImage cdrImage = (CdrImage) Image.Load("Snake.cdr"))
{
	// Create PDF options
	PdfOptions pdfOptions = new PdfOptions();
	CdrRasterizationOptions rasterizationOptions = new CdrRasterizationOptions();
	rasterizationOptions.TextRenderingHint = TextRenderingHint.SingleBitPerPixel;
	rasterizationOptions.SmoothingMode = SmoothingMode.None;
	rasterizationOptions.Positioning = PositioningTypes.DefinedByDocument;
	pdfOptions.VectorRasterizationOptions = rasterizationOptions;
	// Save the CDR file as PDF
	cdrImage.Save("Snake.cdr.pdf", pdfOptions);
	Console.WriteLine("CDR file converted to PDF successfully!");
	freeMem2 = GC.GetTotalMemory(false);
}

long usedMem = freeMem - freeMem2;

long m500Mb = 500 * 1024L * 1024;
long m2Gb = 2 * 1024L * 1024 * 1024;
Console.WriteLine("UsedMem : {0}", usedMem);
if (usedMem <= m500Mb)
{
	Console.WriteLine("Good result!");
}

Assert.IsTrue(usedMem <= m2Gb)

// Maximum mem using is 2Gb, expected 500Mb

{

IMAGINGNET-7695 Implement the ability to support filters in rendering

Please unzip the archive - "source.zip" to any folder and specify the path to it in the code.

var basePath = "D:\\test\\svg";
var outputPath = Path.Combine(basePath, "output");
if (!Directory.Exists(outputPath))
{
    Directory.CreateDirectory(outputPath);
}

var files = Directory.GetFiles(basePath, "*.svg");
foreach (var file in files)
{
    var fileName = Path.GetFileName(file);
    using (var image = Image.Load(file))
    {
        var pngFile = Path.Combine(outputPath, fileName) + ".png";
        var svgFile = Path.Combine(outputPath, fileName) + ".svg";

        image.Save(pngFile);
        image.Save(svgFile);
    }   
}


{

IMAGINGNET-7673 RasterImage.Blend does not support negative coordinates for a left-top position

using var image = Aspose.Imaging.Image.Load("imagew.png") as RasterImage;
using var watermark = Aspose.Imaging.Image.Load("image_w1.png") as RasterImage;
image.Blend(new Point(-10, -10), watermark); // No exception here

{

IMAGINGNET-6339 Speed up Jpeg2000 processing

using (Image image = Image.Load("input.jp2", new LoadOptions { BufferSizeHint = 10, }))
{
   image.Save("output.jpg", new JpegOptions());
}

{