Я понимаю, что опаздываю на вечеринку, но недавно у меня была возможность посмотреть на это, и использование 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
, за исключением работы с кучей логики с самим продуктом.
person
dchayka
schedule
01.05.2017