I understand that I am late for the party, but I had the opportunity to take a look at this recently, and using init() to resize the product images is fine, as described in the question, but you do not need to use the same function to resize one image from using a function in which the image itself (third parameter) is an optional value.
Here I did to resize the image, this is for any image:
$model = Mage::getModel('catalog/product_image'); $model->setBaseFile('test.png'); $model->setWidth(100); $model->resize(); $model->saveFile(); echo $model->getUrl();
If you do not want to save your image in the media directory, you can use the Varien_Image object to achieve this:
$varienImage = new Varien_Image('test.png'); $varienImage->resize(100); $varienImage->save('var', 'test2.png');
save() takes the first parameter as the directory in which you want to save the new file, and the second is the name of the new file.
The steps are similar to what the init function does, in addition to dealing with a bunch of logic with the product itself.
source share