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: It looks like it is not clear to you how percentage works. You should multiply `percent` by 100. 50% is 50 not 0.5
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: It looks like it is not clear to you how percentage works. You should multiply `percent` by 100. 50% is 50 not 0.5