Browse our Products

Aspose.Imaging for .NET 25.2 - Release notes

Competitive features:

KeySummaryCategory
IMAGINGNET-7477Blank output image on converting TIFFEnhancement
IMAGINGNET-7442Regression: EMF to PDF: Blank output fileEnhancement
IMAGINGNET-7309Creating a PNG with BitDepth=16 throws an exception in evaluation modeEnhancement
IMAGINGNET-7308Conversion of PNG file from 8 bit per channel to 16 fails without a licenseEnhancement
IMAGINGNET-7281Some EXIF metadata props are missing after JPEG to TIFFEnhancement
IMAGINGNET-7174Reduce memory usage during AVIF image loading.Enhancement
IMAGINGNET-6800Add XmpData support in the SVG formatEnhancement
IMAGINGNET-6439Fix bugs with rendering some characters in CDR formatEnhancement

Public API changes:

Added APIs:

Method Aspose.Imaging.FileFormats.Dicom.DicomImageInfo.AddTag(System.String,System.Object)

Method Aspose.Imaging.FileFormats.Dicom.DicomImageInfo.RemoveTagAt(System.Int32)

Method Aspose.Imaging.FileFormats.Dicom.DicomImageInfo.TryAddTag(System.String,System.Object)

Method Aspose.Imaging.FileFormats.Dicom.DicomImageInfo.TryRemoveTagAt(System.Int32)

Method Aspose.Imaging.FileFormats.Dicom.DicomImageInfo.TryUpdateTagAt(System.Int32,System.Object)

Method Aspose.Imaging.FileFormats.Dicom.DicomImageInfo.UpdateTagAt(System.Int32,System.Object)

Method Aspose.Imaging.Image.GetSerializedStream (Aspose.Imaging.ImageOptionsBase,Aspose.Imaging.Rectangle,System.Int32@)

Method Aspose.Imaging.Image.UpdateContainer(Aspose.Imaging.Image)

Method Aspose.Imaging.RasterCachedMultipageImage.GetSerializedStream (Aspose.Imaging.ImageOptionsBase,Aspose.Imaging.Rectangle,System.Int32@)

Method Aspose.Imaging.VectorMultipageImage.GetSerializedStream (Aspose.Imaging.ImageOptionsBase,Aspose.Imaging.Rectangle,System.Int32@)

Property Aspose.Imaging.FileFormats.Dicom.DicomImageInfo.ReadonlyTagsList

Removed APIs:

Usage Examples:

IMAGINGNET-7477 Blank output image on converting TIFF

var inputPath = @"input.tiff";
using (var image = Image.Load(inputPath))
{
    image.Save(inputPath + ".pdf");
}

IMAGINGNET-7442 Regression: EMF to PDF: Blank output file

using (var image = Image.Load("example.emf"))
{
    var rasterOpts = new EmfRasterizationOptions();
    rasterOpts.PageWidth = image.Width;
    rasterOpts.PageHeight = image.Height;
    rasterOpts.BackgroundColor = Color.WhiteSmoke;
    PdfOptions pdfOptions = new PdfOptions();
    pdfOptions.VectorRasterizationOptions = rasterOpts;
    image.Save("emf_out.pdf", pdfOptions);
}

IMAGINGNET-7309 Creating a PNG with BitDepth=16 throws an exception in evaluation mode

var outputPath = "output64Bit.png";

var createOptions = new PngOptions
{
    BitDepth = 16,
    ColorType = PngColorType.TruecolorWithAlpha,
    CompressionLevel = 9,
    FilterType = PngFilterType.Sub,
    Progressive = true
};

License lic = new License();
lic.SetLicense(""); // no license

using (var pngImage = new PngImage(createOptions, 100, 100))
{
    var graphics = new Graphics(pngImage);

    var gradientBrush = new LinearGradientBrush(
        new Point(0, 0),
        new Point(pngImage.Width, pngImage.Height),
        Color.Blue,
        Color.Transparent);

    graphics.FillRectangle(gradientBrush, pngImage.Bounds);

    pngImage.Save(outputPath);
}

IMAGINGNET-7308 Conversion of PNG file from 8 bit per channel to 16 fails without a license

cpp
License lic = new License();
lic.SetLicense(""); // no license
using (var image = Image.Load("OutputAllTypes2.png"))
{
	var options = new PngOptions()
	{
		BitDepth = 16,
		ColorType = PngColorType.TruecolorWithAlpha,
	};

	image.Save("OutputAllTypes2-64Bit.png", options);
}

IMAGINGNET-7281 Some EXIF metadata props are missing after JPEG to TIFF

var inputPath = @"C:\Users\Denis\Downloads\input.JPG";
var outputPath = inputPath + ".tiff";

int imageOrientation = 0;
using (var image = Image.Load(inputPath))
{
    if (image is IHasExifData hasExif)
    {
        imageOrientation = (int)(hasExif.ExifData?.Orientation ?? 0);
    }

    image.Save(outputPath, new TiffOptions(TiffExpectedFormat.TiffJpegRgb)
    {
        KeepMetadata = true,
    });
}

int outputOrientation = 0;
using (var image = Image.Load(outputPath) as TiffImage)
{
    outputOrientation = (int)image.ActiveFrame.FrameOptions.Orientation;
}

Debug.Assert(imageOrientation == outputOrientation);

IMAGINGNET-7174 Reduce memory usage during AVIF image loading.

### Example
The sample AVIF image is exported into a PNG image format. Compared to the previous version, processing speed has increased approximately 12 times, while memory usage has been reduced by about 20 times.
 cpp
var inputPath = "input.avif";
var outputPath = "output.png";

using (var image = (AvifImage)Image.Load(inputPath))
{
	image.Save(outputPath);
}

IMAGINGNET-6800 Add XmpData support in the SVG format

var inputPath = @"input.svg";
var saveSvgWithMetadataOptions = new KeyValuePair<string, ImageOptionsBase>[]
{
    new KeyValuePair<string, ImageOptionsBase>(".svg", null),
    new KeyValuePair<string, ImageOptionsBase>(".svg", new SvgOptions { KeepMetadata = true, }),
};

var inputHasXmp = false;
using (var image = Image.Load(inputPath))
{
    inputHasXmp = (image as IHasXmpData)?.XmpData != null;

    foreach (var kv in saveSvgWithMetadataOptions)
    {
        var outputPath = inputPath + kv.Key;
        if (kv.Value == null)
        {
            image.Save(outputPath);
        }
        else
        {
            image.Save(outputPath, kv.Value);
        }

        using (var outputImage = Image.Load(outputPath))
        {
            var outputHasXmp = (outputImage as IHasXmpData)?.XmpData != null;
            Debug.Assert(inputHasXmp == outputHasXmp, "XmpData is missing.");
        }
    }
}

IMAGINGNET-6439 Fix bugs with rendering some characters in CDR format

cpp
 using (var image = Image.Load("Test corel.cdr"))
 {
     image.Save("result.png", new PngOptions()
     {
         VectorRasterizationOptions = new CdrRasterizationOptions()
         {
             Positioning = PositioningTypes.DefinedByDocument
         }

     });
 }