In Magento, the following code will programmatically add an image a product's image gallery
//set store to admin id so we can save a product
Mage::app()->getStore()->setId(Mage_Core_Model_App::ADMIN_STORE_ID);
//load a product with an id of 2514
$product = Mage::getModel('catalog/product')->load('2514');
//add the image
$product->addImageToMediaGallery('/tmp/test.png','image',false,false);
This, as expected, will add an image to a product's media gallery, and this image will be selected as the product's "Base Image". However, the "small_image" and "thumbnail" images will not be selected for this image.
If the following code is used
$product->addImageToMediaGallery('/tmp/test.png','image',false,false);
$product->addImageToMediaGallery('/tmp/test.png','small_image',false,false);
$product->addImageToMediaGallery('/tmp/test.png','thumbnail',false,false);
Magento will add three new images to the media gallery. One with Base Image selected, one with Small Image selected, and a third with thumbnail.
Is it possible to signal Magento that when you call
$product->addImageToMediaGallery('/tmp/test.png','image',false,false);
that it should automatically generate the small image and the thumbnail image?
Try with:
$product->addImageToMediaGallery('/tmp/test.png',array('image', 'small_image', 'thumbnail'),false,false);