<!--v1.0.20--Updated on 11/23/2023-->

# DynamsoftUtility Module

The Utility module is defined in the namespace `Dynamsoft.Utility`. At present, it consists of the classes `UtilityModule`, `ImageManager`, `MultiFrameResultCrossFilter` and `LayoutAnalyzer`.

## UtilityModule Class

This class defines common functionality in the Utility module. At present, it has only one method.

| Name                                                          | Description                                |
| ------------------------------------------------------------- | ------------------------------------------ |
| `static` [getVersion()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/utility/utility-module-class.md#getversion) | Returns the version of the Utility module. |

## ImageDrawer Class

The `ImageDrawer` class provides APIs for  for drawing shapes on images.

| Name                                           | Description                                            |
| ---------------------------------------------- | ------------------------------------------------------ |
| [drawOnImage()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/utility/image-drawer.md#drawonimage) | Draws various shapes on an image, and save it in PNG format. |

## ImageIO Class

The `ImageIO` class provides APIs for images reading and saving.

| Name                                        | Description                                            |
| ------------------------------------------- | ------------------------------------------------------ |
| [saveToFile()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/utility/image-io.md#savetofile)         | Saves the specified image in either PNG or JPG format.         |
| [readFromFile()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/utility/image-io.md#readfromfile)     | Reads an image from a file                                     |
| [saveToMemory()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/utility/image-io.md#savetomemory)     | Saves an image to memory.                                      |
| [readFromMemory()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/utility/image-io.md#readfrommemory) | Reads image data from memory using the specified ID.           |

## ImageProcessor Class

The `ImageProcessor` class provides APIs for processing images.

| Name                                        | Description                                            |
| ------------------------------------------- | ------------------------------------------------------ |
| [cropImage()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/utility/image-processor.md#cropimage)                         |  Crops an image using a rectangle or quadrilateral.                                |
| [adjustBrightness()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/utility/image-processor.md#adjustbrightness)           |  Adjusts the brightness of the image.                                              |
| [adjustContrast()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/utility/image-processor.md#adjustcontrast)               |  Adjusts the contrast of the image.                                                |
| [filterImage()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/utility/image-processor.md#filterimage)                     |  Applies a specified image filter to an input image.                               |
| [convertToGray()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/utility/image-processor.md#converttogray)                 |  Converts a colour image to grayscale.                                             |
| [convertToBinaryGlobal()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/utility/image-processor.md#converttobinaryglobal) |  Converts a grayscale image to a binary image using a global threshold.            |
| [convertToBinaryLocal()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/utility/image-processor.md#converttobinarylocal)   |  Converts a grayscale image to a binary image using local (adaptive) binarization. |

## MultiFrameResultCrossFilter Class

The `MultiFrameResultCrossFilter` class provides APIs to configure the filtering of results from multiple images which have been processed consecutively. Usually these images are frames from a streaming video.

| Name                                                                                                        | Description                                                                                  |
| ----------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
| [enableLatestOverlapping()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/utility/multi-frame-result-cross-filter.md#enablelatestoverlapping)                   | Enables or disables the to-the-latest overlapping feature of one or multiple specific result item types. This feature can increase the read-rate performance when decoding multiple barcodes under the video streaming. |
| [isLatestOverlappingEnabled()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/utility/multi-frame-result-cross-filter.md#islatestoverlappingenabled)             | Checks if to-the-latest overlapping is active for a given result item type.                  |
| [enableResultCrossVerification()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/utility/multi-frame-result-cross-filter.md#enableresultcrossverification)       | Enables or disables the verification of specific result item types.                          |
| [isResultCrossVerificationEnabled()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/utility/multi-frame-result-cross-filter.md#isresultcrossverificationenabled) | Checks if verification is active for a given result item type.                               |
| [enableResultDeduplication()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/utility/multi-frame-result-cross-filter.md#enableresultdeduplication)               | Enables or disables the deduplication process for specific result item types.                |
| [isResultDeduplicationEnabled()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/utility/multi-frame-result-cross-filter.md#isresultdeduplicationenabled)         | Checks if deduplication is active for a given result item type.                              |
| [setDuplicateForgetTime()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/utility/multi-frame-result-cross-filter.md#setduplicateforgettime)                     | Sets the interval during which duplicates are disregarded for specific result item types.    |
| [getDuplicateForgetTime()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/utility/multi-frame-result-cross-filter.md#getduplicateforgettime)                     | Retrieves the interval during which duplicates are disregarded for a given result item type. |
| [setMaxOverlappingFrames()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/utility/multi-frame-result-cross-filter.md#setmaxoverlappingframes)                   | Set the maximum overlapping frames count for a given result item type.                       |
| [getMaxOverlappingFrames()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/utility/multi-frame-result-cross-filter.md#getmaxoverlappingframes)                   | Get the maximum overlapping frames count for a given result item type.                       |

## LayoutAnalyzer Class

The `LayoutAnalyzer` class provides APIs for analyzing the spatial distribution of quadrilaterals.

| Name                                                          | Description                                                         |
| ------------------------------------------------------------- | ------------------------------------------------------------------- |
| `static` [analyze()](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/utility/layout-analyzer.md#analyze)            | Analyzes the spatial distribution of quadrilaterals.                |

## Interfaces

The following are the interfaces used by the layout analysis feature:

* [LayoutAxis](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/utility/layout-axis.md)
* [LayoutAnalysisParameter](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/utility/layout-analysis-parameter.md)
* [LayoutElement](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/utility/layout-element.md)
* [LayoutAnalysisResult](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/utility/layout-analysis-result.md)

## Enumerations

The following are the enumerations used by the layout analysis feature:

* [EnumLayoutPattern](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/utility/enum-layout-pattern.md)
* [EnumLayoutElementSource](https://www.dynamsoft.com/capture-vision/docs/web/programming/javascript/api-reference/utility/enum-layout-element-source.md)