This is a bug report and could possibly help people having trouble. I was having problems with images of multiple sizes as well. I had uploaded the images like so:
images/products/(publisher)/jpgs/(modelnumber).jpg
images/medium/products/(publisher)/jpgs/(modelnumber)_MED.jpg
images/large/products/(publisher)/jpgs/(modelnumber)_LRG.jpg
The images in images/products were the only ones being used by Zen Cart, regardless of the situation. I could not for the life of me figure out why, until I looked inside:
includes/modules/pages/product_info/main_template_vars_images.php
and found that, on line 25, ALL occurances of the extension, INCLUDING THE PERIOD, WHICH HAS A SPECIAL MEANING IN REGULAR EXPRESSIONS, are removed in the ereg_replace function call, meaning Zen Cart thought the medium image filename was:
images/medium/products/(publisher)s/(modelnumber)_MED.jpg
Note that not only did the three letters 'jpg' in the path get removed, but also the slash immediately preceding the 'j', because the period in the extension was matching the slash.
As a quick fix, I appended the following:
. '$'
to the first parameter of the ereg_replace call, making it only match the extension at the end of the filename string.
From a quick grep I just did, I found 25 instances of this ereg_replace mistake.
grep -r 'ereg_replace($products_image_extention' includes/*
-Don