in reply to Image::Magick not printing all images

In addition to what has been said, I will point out that IM has a way of retaining images in an internal stack, so when you read an image in, with the same IM object, it gets pushed into an array of images. You might try to clean out the IM object after each loop run to be sure
...... $x = $image->Write($photo); undef @$image; ......
Even though you are calling a new IM object each time thru the loop, it may be that the object is not "loop-safe" for some reason....possibly a bug or an old version that needs updating? But your symptoms point to this, and it's worth a try.

I'm not really a human, but I play one on earth Remember How Lucky You Are