Я понимаю, что я опаздываю на вечеринку, но у меня была возможность взглянуть на это недавно, и использование init()
для изменения размера изображений продуктов прекрасно, как описано в вопросе, но вы не должны использовать тот же функция для изменения размера отдельного изображения, через функцию, где само изображение (третий параметр) является необязательным значением.
Вот что я сделал, чтобы изменить размер изображения, это для любого изображения:
$model = Mage::getModel('catalog/product_image');
$model->setBaseFile('test.png');
$model->setWidth(100);
$model->resize();
$model->saveFile();
echo $model->getUrl();
// generates the following url: http://example.com/media/catalog/product/cache/1//9df78eab33525d08d6e5fb8d27136e95/test.png
Если вы не хотите сохранять изображение в каталоге media
, вы можете использовать объект Varien_Image
для достижения этого:
$varienImage = new Varien_Image('test.png');
$varienImage->resize(100);
$varienImage->save('var', 'test2.png');
save()
принимает первый параметр в качестве каталога, в котором вы хотите сохранить новый файл, а второй параметр - имя нового файла.
Шаги аналогичны тому, что делает функция init
, кроме работы с кучей логики с самим продуктом.