Browse our Products

Aspose.Imaging for Python via .NET 24.4 - Release notes

Competitive features:

  • Support of kernel filter
  • Updated base classes and options descriptions with user-friendly texts
  • Add options of modifying Dicom tags to the public API
KeySummaryCategory
IMAGINGPYTHONNET-202Unauthorized access exceptionEnhancement
IMAGINGPYTHONNET-203Fix ArgumentNullException on Graphics.measure_stringEnhancement
IMAGINGPYTHONNET-204Aspose.Imaging 23.9: Converting a tiff with different horizontal and vertical resolutions to PDF produces a stretched resultEnhancement
IMAGINGPYTHONNET-207Add options of modifying Dicom tags to the public APIFeature
IMAGINGPYTHONNET-208Fix PS (EPS) file exportEnhancement
IMAGINGPYTHONNET-209Fix EPS to SVG export issues: EPS processing error, output SVG misses text & Big SVG export performance boostEnhancement
IMAGINGPYTHONNET-210Cannot convert the CDR image to DXF formatEnhancement
IMAGINGPYTHONNET-211EMF to PDF conversion: text doesn’t wrapEnhancement
IMAGINGPYTHONNET-212DJVU to PDF: First page is blankEnhancement
IMAGINGPYTHONNET-213Support PNG loading with unexpected EOF & PNG loader optimizationEnhancement

Public API changes:

Added APIs:

Class aspose.imaging.ProcessingType

Class aspose.imaging.imagefilters.complexutils.Complex

Class aspose.imaging.imagefilters.convolution.ConvolutionFilter

Class aspose.imaging.imagefilters.filteroptions.GaussianDeconvolutionFilterOptions

Class aspose.imaging.imageloadoptions.CmxLoadOptions

Method aspose.imaging.fileformats.dicom.DicomImageInfo.add_tag(tag_description, value)

Method aspose.imaging.fileformats.dicom.DicomImageInfo.remove_tag_at(index)

Method aspose.imaging.fileformats.dicom.DicomImageInfo.try_add_tag(tag_description, value)

Method aspose.imaging.fileformats.dicom.DicomImageInfo.try_remove_tag_at(index)

Method aspose.imaging.fileformats.dicom.DicomImageInfo.try_update_tag_at(index, new_value)

Method aspose.imaging.fileformats.dicom.DicomImageInfo.update_tag_at(index, new_value)

Method aspose.imaging.Image.get_serialized_stream(image_options, clipping_rectangle, page_number)

Method aspose.imaging.RasterCachedMultipageImage.get_serialized_stream(image_options, clipping_rectangle, page_number)

Method aspose.imaging.VectorMultipageImage.get_serialized_stream(image_options, clipping_rectangle, page_number)

Method aspose.imaging.imagefilters.ComplexUtils.Complex.Complex(complex)

Method aspose.imaging.imagefilters.ComplexUtils.Complex.Complex(real, imaginary)

Method aspose.imaging.imagefilters.ComplexUtils.Complex.add(a: Complex, b: Complex)

Method aspose.imaging.imagefilters.ComplexUtils.Complex.add(a: Complex, b: Complex, result: list[Complex])

Method aspose.imaging.imagefilters.ComplexUtils.Complex.add(a: Complex, s: float)

Method aspose.imaging.imagefilters.ComplexUtils.Complex.add(a: Complex, s: float, result: list[Complex])

Method aspose.imaging.imagefilters.ComplexUtils.Complex.approx_equal(a, b)

Method aspose.imaging.imagefilters.ComplexUtils.Complex.approx_equal(a, b, tolerance)

Method aspose.imaging.imagefilters.ComplexUtils.Complex.clone()

Method aspose.imaging.imagefilters.ComplexUtils.Complex.cos(complex)

Method aspose.imaging.imagefilters.ComplexUtils.Complex.divide(a: Complex, b: Complex)

Method aspose.imaging.imagefilters.ComplexUtils.Complex.divide(a: Complex, b: Complex, result: list[Complex])

Method aspose.imaging.imagefilters.ComplexUtils.Complex.divide(a: Complex, s: float)

Method aspose.imaging.imagefilters.ComplexUtils.Complex.divide(a: Complex, s: float, result: list[Complex])

Method aspose.imaging.imagefilters.ComplexUtils.Complex.divide(s: float, a: Complex)

Method aspose.imaging.imagefilters.ComplexUtils.Complex.divide(s: float, a: Complex, result: list[Complex]))

Method aspose.imaging.imagefilters.ComplexUtils.Complex.equals(a)

Method aspose.imaging.imagefilters.ComplexUtils.Complex.exp(a)

Method aspose.imaging.imagefilters.ComplexUtils.Complex.log(a)

Method aspose.imaging.imagefilters.ComplexUtils.Complex.multiply(a, b)

Method aspose.imaging.imagefilters.ComplexUtils.Complex.multiply(a, b, result: list[Complex]))

Method aspose.imaging.imagefilters.ComplexUtils.Complex.multiply(a: Complex, s: float)

Method aspose.imaging.imagefilters.ComplexUtils.Complex.multiply(a: Complex, s: float, result: list[Complex])

Method aspose.imaging.imagefilters.ComplexUtils.Complex.negate(a)

Method aspose.imaging.imagefilters.ComplexUtils.Complex.parse(s: str)

Method aspose.imaging.imagefilters.ComplexUtils.Complex.sin(a)

Method aspose.imaging.imagefilters.ComplexUtils.Complex.sqrt(a)

Method aspose.imaging.imagefilters.ComplexUtils.Complex.subtract(a, b)

Method aspose.imaging.imagefilters.ComplexUtils.Complex.subtract(a, b, result: list[Complex]))

Method aspose.imaging.imagefilters.ComplexUtils.Complex.subtract(a: Complex, s: float)

Method aspose.imaging.imagefilters.ComplexUtils.Complex.subtract(a: Complex, s: float, result: list[Complex])

Method aspose.imaging.imagefilters.ComplexUtils.Complex.subtract(s: float, a: Complex)

Method aspose.imaging.imagefilters.ComplexUtils.Complex.subtract(s: float, a: Complex, result: list[Complex])

Method aspose.imaging.imagefilters.ComplexUtils.Complex.tan(a)

Method aspose.imaging.imagefilters.ComplexUtils.Complex.try_parse(s, result: list[Complex])

Method aspose.imaging.imagefilters.Convolution.ConvolutionFilter.get_emboss_3x3()

Method aspose.imaging.imagefilters.Convolution.ConvolutionFilter.get_emboss_5x5()

Method aspose.imaging.imagefilters.Convolution.ConvolutionFilter.get_sharpen_3x3()

Method aspose.imaging.imagefilters.Convolution.ConvolutionFilter.get_sharpen_5x5()

Method aspose.imaging.imagefilters.FilterOptions.ConvolutionFilterOptions(kernel, factor, bias)

Method aspose.imaging.imagefilters.FilterOptions.DeconvolutionFilterOptions.DeconvolutionFilterOptions(kernel[Complex])

Method aspose.imaging.imagefilters.FilterOptions.DeconvolutionFilterOptions.DeconvolutionFilterOptions(kernel: list[double])

Method aspose.imaging.imagefilters.FilterOptions.GaussianDeconvolutionFilterOptions.GaussianDeconvolutionFilterOptions()

Method aspose.imaging.imagefilters.FilterOptions.GaussianDeconvolutionFilterOptions.GaussWienerFilterOptions(size: int, sigma: float)

Method aspose.imaging.imageloadoptions.CmxLoadOptions.CmxLoadOptions()

Field/Enum aspose.imaging.ProcessingType.DEFAULT

Field/Enum aspose.imaging.ProcessingType.INTERLACED8

Field/Enum aspose.imaging.imagefilters.complexutils.Complex.I

Field/Enum aspose.imaging.imagefilters.complexutils.Complex.ONE

Field/Enum aspose.imaging.imagefilters.complexutils.Complex.SIZE_OF_COMPLEX

Field/Enum aspose.imaging.imagefilters.complexutils.Complex.SIZE_OF_DOUBLE

Field/Enum aspose.imaging.imagefilters.complexutils.Complex.ZERO

Property aspose.imaging.imagefilters.ComplexUtils.Complex.im

Property aspose.imaging.imagefilters.ComplexUtils.Complex.magnitude

Property aspose.imaging.imagefilters.ComplexUtils.Complex.phase

Property aspose.imaging.imagefilters.ComplexUtils.Complex.re

Property aspose.imaging.imagefilters.ComplexUtils.Complex.squared_magnitude

Property aspose.imaging.imagefilters.filteroptions.ConvolutionFilterOptions.kernel_data

Property aspose.imaging.imagefilters.filteroptions.DeconvolutionFilterOptions.kernel_data

Property aspose.imaging.imagefilters.filteroptions.GaussianBlurFilterOptions.kernel_data

Property aspose.imaging.imagefilters.filteroptions.GaussianBlurFilterOptions.size

Property aspose.imaging.imagefilters.filteroptions.GaussianDeconvolutionFilterOptions.radius

Property aspose.imaging.imagefilters.filteroptions.GaussianDeconvolutionFilterOptions.sigma

Property aspose.imaging.imagefilters.filteroptions.GaussianDeconvolutionFilterOptions.size

Property aspose.imaging.imagefilters.filteroptions.GaussWienerFilterOptions.kernel_data

Property aspose.imaging.imagefilters.filteroptions.MotionWienerFilterOptions.kernel_data

Property aspose.imaging.imagefilters.filteroptions.SharpenFilterOptions.kernel_data

Property aspose.imaging.imageloadoptions.CdrLoadOptions.optimal_memory_usage

Property aspose.imaging.imageloadoptions.CmxLoadOptions.optimal_memory_usage

Property aspose.imaging.fileformats.dicom.DicomImageInfo.readonly_tags_list

Removed APIs:

Field/Enum aspose.imaging.DataStreamSupporter.timeout

Field/Enum aspose.imaging.StreamContainer.start_position

Property aspose.imaging.imagefilters.FilterOptions.GaussWienerFilterOptions.radius

Property aspose.imaging.imagefilters.FilterOptions.GaussWienerFilterOptions.smooth

Property aspose.imaging.imagefilters.FilterOptions.MotionWienerFilterOptions.length

Property aspose.imaging.imagefilters.FilterOptions.MotionWienerFilterOptions.smooth

Usage Examples:

IMAGINGPYTHONNET-202 Unauthorized access exception

from aspose.imaging import Image

# Code below does not throw UnauthorizedAccessException on loading a read-only image file
with Image.load("read-only-png.png") as image:
  # do something
  pass

IMAGINGPYTHONNET-203 Fix ArgumentNullException on Graphics.MeasureString

from aspose.imaging import Image, Graphics, Font, SizeF, StringFormat

path = "arrow.png"
with Image.load(path) as image:
    g = Graphics(image)
    size = g.measure_string("Hello", Font("Arial", 10), SizeF(100, 100), StringFormat.GENERIC_DEFAULT)
    print(size)
	

IMAGINGPYTHONNET-204 Aspose.Imaging 23.9: Converting a tiff with different horizontal and vertical resolutions to PDF produces a stretched result

from aspose.imaging import Image, RasterImage, SizeF, ResolutionSetting
from aspose.imaging.imageoptions import PdfOptions
from aspose.pycore import as_of

inputPath = "L232_20230920113909_033414.tif"
outputPath = inputPath + ".pdf"
with as_of(Image.load(inputPath), RasterImage) as image:
    pdf_options = PdfOptions()
    pdf_options.page_size = SizeF(image.width, image.height)
    pdf_options.resolution_settings = ResolutionSetting(image.horizontal_resolution, image.vertical_resolution)
    image.save(outputPath, pdf_options)

IMAGINGPYTHONNET-207 Add options of modifying Dicom tags to the public API

from aspose.pycore import as_of
from aspose.imaging import Image
from aspose.imaging.fileformats.dicom import DicomImage

with as_of(Image.load("ttfm.dcm"), DicomImage) as image:
    image.file_info.update_tag_at(33, "Test Patient") # "Patient's Name"
    image.file_info.add_tag("Angular View Vector", 234)
    image.file_info.remove_tag_at(29) # "Station Name"
    image.save("output.dcm")

IMAGINGPYTHONNET-208 Fix PS (EPS) file export

from aspose.imaging import Image

with Image.load("input.ps") as image:
    image.save("output.png")

IMAGINGPYTHONNET-209 Fix EPS to SVG export issues: EPS processing error, output SVG misses text & Big SVG export performance boost

from aspose.imaging import Image

with Image.load("input.eps") as image:
    image.save("output.png")

IMAGINGPYTHONNET-210 Cannot convert the CDR image to DXF format

from aspose.imaging import Image
from aspose.imaging.imageoptions import DxfOptions, VectorRasterizationOptions, PositioningTypes

with Image.load("Laser Cut Christmas Gift New Year Night Lamp CDR File.cdr") as image:
    dicom_options = DxfOptions()
    vector_options = VectorRasterizationOptions()
    vector_options.positioning = PositioningTypes.RELATIVE
    dicom_options.vector_rasterization_options = vector_options
    image.save("result.dxf", dicom_options)

IMAGINGPYTHONNET-211 EMF to PDF conversion: text doesn’t wrap

from aspose.pycore import as_of
from aspose.imaging import Image, Rectangle
from aspose.imaging.fileformats.emf import EmfImage

with as_of(Image.load("50123_pg1.emf"), EmfImage) as emfImage:
    # The original canvas is too large, resize to A4, 72 DPI
    emfImage.resize_canvas(Rectangle(0, 0, 595, 842))
    emfImage.save("50123_pg1.pdf")

IMAGINGPYTHONNET-212 DJVU to PDF: First page is blank

from aspose.imaging import Image
from aspose.imaging.imageoptions import PdfOptions

with Image.load("Sample1.djvu") as image:
    image.save("Sample1.pdf", PdfOptions())
	

IMAGINGPYTHONNET-213 Support PNG loading with unexpected EOF & PNG loader optimization

from aspose.imaging import Image

with Image.load("input.png") as image:
    image.save("output.png")