Image processing is a popular, contemporary technology for image manipulation, in order to retrieve essential information, that is not possible to retrieve from regular images. A developer supporting enterprise .NET applications would use an Imaging API to achieve complex image processing. Most apps have some need for image processing -- you may be uploading profile photos, or storing photographs, or need to use images for interpretation and analysis. The sharper your images' quality, the better your users can interpret information (and the better your app will look).
While many languages are versatile enough to provide image processing, there's a shortage of full-featured libraries supported on .NET Standard 2.0. This means you'd lose the ability to write a single code base for cross-platform support.
Imaging API Use Cases
Applications in medicine, science, research, business development, retail, and more can benefit from the photo and image manipulation capabilities an imaging API provides.
An imaging API is ideal for developers that need to produce accurate images for image transmission. In the healthcare and medical industries, an imaging API can be used to generate images from X-rays and ultrasounds to detect conditions for patient screening.
Photographers can dither high-color-depth images to view on low-color-depth environments, like embedded systems. Users can also restore and enhance surveillance imagery in a forensic science application.
Why You May Need an Imaging API:
- Loading and saving image files like BMP, JPEG, TIFF, GIF, and PNG to display, modify and save images in your .NET applications.
- In a batch image processing program, you can perform mass rotation, cropping, resizing, and converting images from one format to another, and to align images as per your application needs in terms of space and size.
- Applying effects like dithering and thresholding on grayscale and RGB images to transform dull images into more meaningful images with details.
- Drawing graphics on images, filling regions, adding frames, and a company watermark in order to convert your image into a branding element and logo of a company.
- Drawing advanced text with full font handling, text, paragraph formatting images to create titles for the images, and to enhance the pictorial information.
- Apply advanced TIFF features to keep working with high-quality images in your applications.
- In a web application or similar, automatically manipulate or transform user-provided images (for example, to make a round avatar from a user-supplied photo, adding borders etc.).
- In a search engine (or program) to find images based on Exif (e.g., find all photos made by a Nikon camera).
- Be able to use a single imaging solution on different platforms, like Windows, Linux and macOS, to generate similar images without discrepancies.
- Deploy to Azure and AWS, to create services that can convert images on the cloud for your application needs.
Using Images in .NET Applications
Sometimes, textual information is just not enough in any article or a web page. You may need to enhance the information, with pictorial illustrations. Concepts may be too complex to understand from text and may be easier to understand visually.
- In job application forms, employees need to upload a profile image.
- In company legal documents, companies need to insert company logo images on every page, or on shipping labels.
- In e-commerce applications, product images need to be displayed, with high quality (many times, people are more likely to choose products based on quality of images).
- In thesis/magazine/newspaper articles, images enhance the textual information. Pages with quality imagery experience more traffic than the pages that contain only textual information.
- In flyers or magazine covers, images are generally combined with magazine/event name, title, or a social topic etc.
- In social media marketing, traffic relies heavily on illustrations of the business discipline.
The images can be of any format, so your application needs a method to work with the images in a variety of popular formats. More importantly, if your application works on .NET Core, you need an Imaging API that can work on this platform to generate high-quality images.
The image below is a cover of a Traveller's Guide, with a scenic image, company logo and text, and title of the guide. Also included are some graphics on the image.
Rotate, Resize and Convert Images with an API
Every application has its own design structure and spaces assigned for displaying images.
- Rotation may be needed if you capture a photo in a different angle and need rotation correction, or if a photo is captured in landscape mode (and your application has a limited space) and you need to use it as portrait.
- Resizing is needed if you want to convert an image to a thumbnail size and use it as a profile picture on a form or a web page. Or, you may want to resize an image for an online store app, where the product catalog has smaller images, and you need to add a functionality that enlarges the images when an end-user hovers over the image.
- You may need to convert an image format if your application is using only one type of format, or if there are size constraints. Also, you may need to convert images as per your application's edits in size, space, etc.
The image below shows how an original image is resized into various sized thumbnails, to fit in applications of required design.
Advanced Effects on Grayscale and RGB Images
The Dithering Effect
Effects like dithering and thresholding play an important role in image possessing. Dithering is an image display technique to overcome limited display resources. In a dithered image, colors that are not available in the palette are approximated by a diffusion of colored pixels from within the available palette. For example, you may need a dithering option in your .NET app if your end-user has image size limitations. Images saved for web, embedded in an email, or within documents need to be optimized (with a decreased file size). Dithering enables you to save images optimized for these purposes.
The Thresholding Effect
Image thresholding is a method of image segmentation. From a grayscale image, thresholding can be used to create binary images. For example, your application’s end-user needs satellite information (geographical or topical). Thresholding eliminates noise and keeps a small file size while retaining essential image information.
The images below show original image of a satellite image for weather forecasting. The first is a dithered image, highlighting greater details of the spacial activity. The second image shows the thresholding effect.
Drawing Graphics and Text on Images
You may need to draw graphics and text on images -- a cover page of a magazine, flyer, invitation, or an e-commerce product image. An imaging API can superimpose shapes or graphics (and expand to support filling shapes, adding gradients).
The image below is an example of how a product is promoted in an online store, with a discount offer featured inside the semi-transparent shape form.
Working with TIFF Images in Your .NET App
A TIFF image can have frames of different resolution or orientation. An advantage of a TIFF image is that every frame can a have different image quality and it stores all of frames in one TIFF file.
The below snapshots are different frames of a TIFF file.
Photometric Interpretation tags are an important part of TIFF specification and it's important to specify the tag while creating TIFF images. It tells the application whether the image format being loaded is black, white, within a colored palette, or a transparency mask.
TIFF images are mostly used in print media and by professional photographers to archive images. TIFFs support lossless compression; it doesn’t decrease quality, regardless of how many times you edit the TIFF. Due to various compression schemes that it supports, TIFFs can be compressed to smaller sizes while maintaining a high-quality. The TIFF format is also secure, it doesn’t embed hidden data so it is a secure choice for companies dealing with customer records or sensitive information.
Capturing Exif Metadata
Images based on Exif metadata contain a lot of information. For example, fields can tell you about the model of the camera, the time it was taken, the shutter speed, focal length, light value and even the location, whether the flash was used, title, creator, date, description, copyright, etc. The Imaging API should be able to extract such data from the image for further analysis by intelligence, investigative agencies, news agencies, remote sensing research etc.
Work with Images in Batch Programs
Developers generally have requirements to update images in mass documents through programs or web applications. For example, they may need to update thousands of product images in a product catalog, resize all of them to a standard size at one go, and place them at right positions. Or, a company that has thousands of employees, issues photo ID cards to the employees. The ID card has a standard template, with company name, logo, employee name and details, and HR signature.
All a developer needs to do is run the program, insert the image at the right location in the template, and print the card. Imaging APIs are needed in these situations to apply a combination of features to achieve the final result.
The example below shows the ID card template of a company and the final result after a developer has modified the image and applied it to the template:
Generate High-quality Images on Windows, Linux, and macOS
With Microsoft releasing .NET Standard and .NET Core, the technologies define cross-platform specification that provides a consistent set of APIs for application developers. This encourages application developers to automate their processes and migrate to.NET Standard. The need for an Imaging API that works on such a platform becomes more and more significant.
Deploying as FaaS on Azure and AWS
Rather than having companies manage the infrastructure to deploy their apps locally, Azure and AWS offer solution services to manage servers, storage, databases, networking, and software over the cloud.
If applications are using images, the imaging API should support working with these images on cloud as well:
- You can create photo albums on cloud and upload images to it.
- You can create a service on cloud that uploads an image, resizes it and gives back a rounded thumbnail.
- You can create a service on cloud that uploads an image, adds a company watermark to it and sends it back.
Document Solutions for Imaging
If you are looking for an Imaging API that can produce advanced imaging effects as listed above, have a look at Document Solutions for Imaging (DsImaging, formerly GcImaging), .NET Edition.
DsImaging is an image library that can create, load, modify and save images in .NET 6+ applications with full support on Windows, macOS, Linux, AWS Lambda and Azure Functions. You can apply advanced image processing in code, with no dependencies on Microsoft Word, Acrobat, Adobe, Paint, or any other professional design software.
Ready to Try Out the Plugins? Download Document Solutions for Imaging Today!
Check out DsImaging's full featured demo sample for code samples and feature demonstration. These samples are .NET Core applications, available for download from the demo sample.
To learn DsImaging Product Architecture and Features in detail, please visit the DsImaging documentation.