Possible reason 2: Media folder is owned by another user. It can happen if you transfer your Magento store from one server to another.
Solution: Change ownership of the /media/ folder:
chown -R {username}:{username} media/
Important: Make sure that folder owner is the same user as your web server user. If you are not sure, contact your server support administrator.
Possible reason 3: Magento cannot resize images due low PHP memory limit. Magento resize images using GD library, however if there is no sufficient amount of memory for such operation Magento will return a placeholder image.
Solution: Increase your memory limit. You should open your .htaccess file and find this string:
php_value memory_limit 256M
Make sure that this value is at least 256M, 512M is better.
Possible reason 4: The GD library is not installed/configured.
Solution: Make sure that your hosting installed GD library on your server, you can check it using php info.
Possible reason 5: Wrong attribute scope for small_image, thumbnail, base_image. Sometimes Magento processes images incorrectly, if they have scope=Store View (especially in case of multi-store installation).
Solution: You should open your Magento admin panel -> Catalog -> Attributes -> Manage attributes. After this you should find image, small_image & thumbnail attributes. Make sure that all these attributes have scope = Global.
Possible reason 6: Problem with safe mode.
Solution: It is not recommended to disable safe mode, but if you tried all other solutions you might try to disable safe mode on your server.
Read more BUGFIXES:PRODUCT IMAGES NOT SHOWING IN MAGENTO
media
folder recursively to777
.