While trying to improve PerceptualHash performance, I came across a couple errors. With very large images, PerceptualHash takes forever to compute. I'm submitting the errors as separate issues with the same code sample.
AdaptiveResize, as seen below, internally disposes the image when it is called. I've tried it on several images.
Image I've tested against, http://www.nasa.gov/images/content/378535main_lands.jpg
```
public static ImageMagick.PerceptualHash PHash(this FileInfo file, int imageSizeConstraint = 5000)
{
if (imageSizeConstraint < 1000)
imageSizeConstraint = 1000;
using (MagickImage image = new MagickImage(file.FullName))
{
if (image.Width > imageSizeConstraint || image.Height > imageSizeConstraint)
{
double percent = imageSizeConstraint / (double)Math.Max(image.Width, image.Height);
Percentage p = new Percentage(percent);
if (percent < 0.5)
image.AdaptiveResize(new MagickGeometry(p, p));
else
image.Resize(p);
}
return image.PerceptualHash();
}
}
```
Comments: The next version of Magick.NET will throw an ArgumentException when you create a geometry that has a with and height of zero.
AdaptiveResize, as seen below, internally disposes the image when it is called. I've tried it on several images.
Image I've tested against, http://www.nasa.gov/images/content/378535main_lands.jpg
```
public static ImageMagick.PerceptualHash PHash(this FileInfo file, int imageSizeConstraint = 5000)
{
if (imageSizeConstraint < 1000)
imageSizeConstraint = 1000;
using (MagickImage image = new MagickImage(file.FullName))
{
if (image.Width > imageSizeConstraint || image.Height > imageSizeConstraint)
{
double percent = imageSizeConstraint / (double)Math.Max(image.Width, image.Height);
Percentage p = new Percentage(percent);
if (percent < 0.5)
image.AdaptiveResize(new MagickGeometry(p, p));
else
image.Resize(p);
}
return image.PerceptualHash();
}
}
```
Comments: The next version of Magick.NET will throw an ArgumentException when you create a geometry that has a with and height of zero.