How is your experience with the OutSystems Community?
imagetoolboxadvanced
Reactive icon

ImageToolboxAdvanced

Stable version 1.0.0 (Compatible with OutSystems 11)
Uploaded
 on 2 Nov (yesterday)
 by 
0.0
 (0 ratings)
imagetoolboxadvanced

ImageToolboxAdvanced

Documentation
1.0.0


1. Overview

Image Toolbox Advanced is an OutSystems 11 extension that provides a comprehensive collection of server-side image-processing capabilities.

Built on ImageMagick (Magick.NET) and ZXing.Net, the component allows developers to manipulate, analyze, convert, and validate images, process scanned documents, and generate or read QR codes and barcodes.

It eliminates the need to implement complex image-processing logic from scratch and provides reusable server actions for common image-related requirements.

2. Platform and Dependencies

PropertyDetails
PlatformOutSystems 11
Component typeServer-side Extension
Image processingImageMagick / Magick.NET
Barcode processingZXing.Net
Available server actions                              38
Input/output formatBinary Data, Text, Records, Record Lists

3. Installation and Usage

  1. Download and install the extension in your OutSystems environment.

  2. Reference the extension in your application.

  3. Use the available server actions in your Server Actions or application logic.

  4. Pass the source image as Binary Data along with the required parameters.

  5. Use the returned Binary Data to save, display, or download the processed image.

For image uploads, use IsValidImage to validate the uploaded content before processing it.

4. Available Server Actions

A. Image Manipulation and Conversion

ActionDescription
ConvertApplies ImageMagick operations such as resizing, rotating, flipping, cropping, borders, and filters.
ConvertImageTypeConverts images between supported formats such as JPG, PNG, TIFF, GIF, WebP, and PDF.
MergeImagesCombines multiple images horizontally, vertically, or in a grid.
SmartCropCrops an image to exact dimensions while preserving important visual details.
RoundCornersCreates an image with rounded corners and transparent outside areas.
CircleCropCreates a circular image, suitable for profile pictures and avatars.
RemoveSolidBackground             Removes a solid-color background and makes it transparent.
DrawShapesDraws rectangles, circles, ellipses, lines, arrows, and text over an image.


B. Image Information and Validation

ActionDescription
IdentifyRetrieves the original width and height of an image.
GetImageInfoRetrieves image format, MIME type, dimensions, file size, DPI, color space, transparency, page count, and orientation.
GetExifDataExtracts EXIF metadata, including camera details, capture date, GPS information, and raw tags.
IsValidImageValidates whether the supplied binary is a readable image and detects damaged files.
GetDominantColorsReturns the dominant colors of an image with their hex values and percentages.
IsBlurryEstimates image sharpness using the variance of the Laplacian.
GetPageCountReturns the number of pages or frames in a multi-page image or animation.


C. Watermarks and Image Generation

ActionDescription
AddImageWatermarkAdds a logo or image watermark at a specified position or tiles it across the image.
AddTextWatermarkAdds text watermarks with configurable position, color, opacity, font, and rotation.
AddTimestampAdds a timestamp or custom text to an image, optionally using EXIF capture time.
GenerateAvatarCreates an avatar from a name using its initials.
GeneratePlaceholderGenerates a placeholder image with a specified size, background color, and optional text.
CreateContactSheetCreates a grid of image thumbnails with captions.
CreateAnimatedGifCreates an animated GIF from multiple images.


D. Document Processing

ActionDescription
ImagesToPdfConverts multiple images into a PDF with one image per page.
SplitPagesSplits a multi-page image into individual pages or frames.
DeskewDocumentStraightens tilted scanned documents.
EnhanceDocumentEnhances scanned documents in BlackWhite, Grayscale, or Color mode.
CompressToMaxSizeCompresses an image to a target file size by adjusting quality and optionally dimensions.
BlurRegionsBlurs, pixelates, or blacks out selected regions of an image.


E. Base64 and Image Similarity

ActionDescription
ImageToBase64Converts image binary data into a Base64 string.
Base64ToImageConverts a Base64 string or data URI into image binary data.
ImageToDataUriConverts an image into a data URI for use in HTML, CSS, or emails.
GetImageHashGenerates a 64-bit perceptual hash for an image.
CompareImageHashesCompares perceptual hashes to identify visually similar images.
CompareCompares two same-sized images and returns an RMSE difference metric and a visual difference image.


F. QR Codes and Barcodes

ActionDescription
GenerateQRCodeGenerates a QR code PNG with configurable size, colors, error correction, and optional center logo.
ReadQRCodeReads the first QR code found in an image.
ReadBarcodesDetects and reads multiple QR codes and barcodes in an image.
GenerateBarcodeGenerates barcode images in supported formats such as Code 128, Code 39, EAN, UPC, Data Matrix, PDF417, and Aztec.


5. Important Input and Output Details

Binary Data

Most image-processing actions accept SourceContent as Binary Data and return the processed image through an output such as NewContent.

The returned binary can be:

  • Stored in an OutSystems Entity attribute of type Binary Data.

  • Displayed using an Image widget.

  • Used as input for another image-processing action.

  • Returned as a downloadable file.

ImageMagick Options

The Convert action accepts ImageMagick command-line syntax through its Options input.

Example:

-resize 800x600 -quality 85

This resizes the image and sets its output quality.

Refer to the official ImageMagick documentation for supported operations and options.

QR Code and Barcode Formats

Supported barcode formats include:

  • CODE_128, CODE_39, CODE_93

  • EAN_13, EAN_8

  • UPC_A, UPC_E

  • ITF, CODABAR

  • DATA_MATRIX, PDF_417, AZTEC

EAN and UPC formats require numeric input with the appropriate number of digits.

6. Example Use Cases

Image Upload Validation and Compression

  1. Receive an uploaded image.

  2. Call IsValidImage to verify the file.

  3. Call CompressToMaxSize to reduce the file size.

  4. Save the returned image binary in the database.

Generate a QR Code

  1. Call GenerateQRCode.

  2. Provide the text or URL to encode.

  3. Configure size, colors, and optional logo.

  4. Store or display the returned PNG binary.

Convert Images to PDF

  1. Prepare a Record List containing the images.

  2. Call ImagesToPdf.

  3. Configure page size, orientation, margins, and resolution.

  4. Use the returned PDF binary for storage or download.

Protect Sensitive Information

  1. Identify the regions that contain sensitive information.

  2. Pass those regions to BlurRegions.

  3. Select Blur, Pixelate, or Black mode.

  4. Use the returned image in the application.

7. Notes and Limitations

  • Image processing is performed server-side and may consume CPU and memory for large images.

  • Supported formats depend on the installed ImageMagick configuration and the specific action.

  • RemoveSolidBackground is designed for solid-color backgrounds and is not an AI background-removal tool.

  • Compare requires both images to have the same dimensions.

  • EXIF information, including GPS coordinates, is only available when present in the original image.

  • Perceptual image hashes identify visual similarity, not exact file equality.

  • Compression results depend on the source image, output format, quality settings, and resize configuration.

  • QR code and barcode reading accuracy depends on image resolution, contrast, and code quality.

8. Credits and Libraries

This extension uses:

  • ImageMagick / Magick.NET for image manipulation and analysis.

  • ZXing.Net for QR code and barcode generation and decoding.

Please refer to the respective library licenses and documentation when redistributing or using the extension in commercial applications.

9. Support and Feedback

For issues, suggestions, or feature requests, please use the component's OutSystems Forge discussion or feedback channels.