Я понимаю, что я опоздал на вечеринку, но у меня была возможность посмотреть на это в последнее время и с помощью 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
, помимо того, что она имеет дело с кучей логики с самим продуктом.
Я не могу использовать это, потому что использую «Mage :: getModel ('catalog/category') -> load ($ _ category-> getId()); чтобы получить экземпляр категории .. выше код работает для отдельных продуктов .. – balanv
@balanv попробуйте новый код пожалуйста. –
Я пробовал это, но не могу использовать это. Когда я использую код $ this-> helper ('catalog/image') -> init ($ cur_category, 'thumbnail', $ image-> getFile()) -> resize (100,100); показывает ошибку, как «Позвоните в функцию-член getFile() на не-объекте в /app/design/frontend/default/default/template/easycatalogimg/subcategories.phtml« – balanv