GD, Image::Magick and Imager use different technics when reducing the size of an image. Because of this the reduced image will not be exactly the same, and thus not have the same hash. That means that the hashes are not portable between the different backend libraries.
We start out with the Alyson_Hannigan_200512.jpg image

It gets reduced to 8x8 pixels:
| GD | Image::Magick | Imager |
|---|---|---|
![]() |
![]() |
![]() |
The 8x8 pixel image get converted to gray scale:
| GD | Image::Magick | Imager |
|---|---|---|
![]() |
![]() |
![]() |
As you can see, the different images differ slightly, and will thereby produce different hashes.
Tip: You can use the eg/print-reduced-image.pl script to print out the 8x8 pixel images shown here.





