PictureEffects Xojo Plugin |

# ImageComparer Class

A class to compare images for differences. The class can to exact match or use a tolerance parameter. The class work on 24 and 32 bit images.

MPImageFilter
ImageComparer

class ImageComparer

#### Properties

Mask | Sets mask for the operation.
CPUCoreCount (Inherited) (console safe) | Returns number of detected CPU cores on the running machine.
ErrorCode (Inherited) (console safe) | Returns error code after applying the effect. This value is a Constant defined in the PictureEffectsError module.
MultiprocessingHint (Inherited) (console safe) | Use this property to fine tune CPU usage for this algorithm. By default this property is set to zero (Automatic). This property accepts all constants that are defined in this class.
ProgressHandler (Inherited) (console safe) | Use this property to use a progress class to get progress feedback from this function. This class must be a class that Implements the IProgressHandler Interface which is defined in this plugin.

#### Methods

Compare | A simple comparison that just returns true or false.
Compare | A detailed comparison that returns pixel count and comparison mask and you can set tolerance.

#### Constants

DIFFERENCE_ERROR = -1 | A constant that can be returned in the difference ByRef parameter of the Compare function. This constant hints that there was a error. Use the LastError property to get further hint what error it was.
DIFFERENCE_NONE = 0 | A constant that can be returned in the difference ByRef parameter of the Compare function. This constant tells that there was no difference between the pictures.
DIFFERENCE_PIXELDEPTH = 1 | A constant that can be returned in the difference ByRef parameter of the Compare function. This constant tells that there was different pixel depth on the pictures.
DIFFERENCE_SIZE = 2 | A constant that can be returned in the difference ByRef parameter of the Compare function. This constant tells that there was different size on the pictures.
DIFFERENCE_PIXELS = 3 | A constant that can be returned in the difference ByRef parameter of the Compare function. This constant tells that one or more pixels of the images were different.
CPU_USE_MACHINE_CORE_COUNT = -1 (Inherited) | Uses exactly the number of available CPU cores in the machine. (Available here means on-line CPU cores, some laptops can put CPU cores off line in low battery situations)
CPU_USE_AUTOMATIC = 0 (Inherited) | Takes into account number of available CPU cores on the Machine and also tries to select the fastest way based on developer rating for each algorithm and picture size. (In simple algorithms then the fastest path is sometimes 2 or 3 CPU cores and not 4 CPU cores because of the overhead of managing multiple cores). In more complex algorithms then 3 or 4 cores are almost always faster than 2 cores.
CPU_USE_1_CORE = 1 (Inherited) | Uses one CPU core.
CPU_USE_2_CORES = 2 (Inherited) | Uses two CPU cores. This setting will also work on machines with less than two CPU cores, but it will be slower or best case same speed as using the correct setting for such machine.
CPU_USE_3_CORES = 3 (Inherited) | Uses three CPU cores. This setting will also work on machines with less than three CPU cores, but it will be slower or best case same speed as using the correct setting for such machine.
CPU_USE_4_CORES = 4 (Inherited) | Uses four CPU cores. This setting will also work on machines with less than four CPU cores, but it will be slower or best case same speed as using the correct setting for such machine.
CPU_USE_5_CORES = 5 (Inherited) | Uses five CPU cores. This setting will also work on machines with less than four CPU cores, but it will be slower or best case same speed as using the correct setting for such machine.
CPU_USE_6_CORES = 6 (Inherited) | Uses six CPU cores. This setting will also work on machines with less than four CPU cores, but it will be slower or best case same speed as using the correct setting for such machine.
CPU_USE_7_CORES = 7 (Inherited) | Uses seven CPU cores. This setting will also work on machines with less than four CPU cores, but it will be slower or best case same speed as using the correct setting for such machine.
CPU_USE_8_CORES = 8 (Inherited) | Uses eight CPU cores. This setting will also work on machines with less than four CPU cores, but it will be slower or best case same speed as using the correct setting for such machine.

#### Examples

Dim pic as Picture
Dim comparer as ImageComparer
Dim differentPixelCount as Integer
Dim difference as Integer
if m_Picture1 = nil then
return
end if
comparer = new ImageComparer()
if chkUseMask.Value then
comparer.Mask = mask
end if
m_DistortedImage = comparer.Compare(m_Picture1,m_Picture2,&c00 00 00,toleranceSlider.Value,differentPixelCount,difference)
if difference = ImageComparer.DIFFERENCE_NONE then
StaticText6.Text = "The images are equal"
elseif difference = ImageComparer.DIFFERENCE_PIXELDEPTH then
StaticText6.Text = "The images dont have same pixel depth"
elseif difference = ImageComparer.DIFFERENCE_SIZE then
StaticText6.Text = "The images dont have same size"
elseif difference = ImageComparer.DIFFERENCE_PIXELS then
StaticText6.Text = "The images dont have same pixels"
else
StaticText6.Text = "Error comparing images"
end if
StaticText5.Text = "Number of different pixels found: " + Str(differentPixelCount)
Canvas3.Refresh(false)

#### Supported Platforms:

- MacOS X Carbon
- MacOS X Cocoa 32 bit
- MacOS X Cocoa 64 bit
- Windows 32 bit
- Windows 64 bit
- Linux 32 bit
- Linux 64 bit
- Linux ARM