Как работает генерация изображений продукта в Magento?

magento.stackexchange https://magento.stackexchange.com//questions/75100

Вопрос

Как работает генерация изображений продукта в Magento?

Это было полезно?

Решение

Если под созданием изображения вы подразумеваете изменение размера изображения продукта, это делается, начиная с класса Mage_Catalog_Helper_Image.
Вы вызываете метод init который получает в качестве параметров экземпляр модели продукта и код атрибута изображения, размер которого вы пытаетесь изменить (image, thumbnail, small_image или любой другой пользовательский атрибут изображения, который у вас есть).

Этот вспомогательный класс является всего лишь оболочкой для модели Mage_Catalog_Model_Product_Image
На основе параметров, которые вы установили в init метод magento извлекает путь к фактическому полноразмерному изображению или заполнителю, если изображение не существует.

Вы можете установить с помощью этого помощника (который вызывает упомянутую выше модель) некоторые атрибуты нового изображения, такие как ширина, высота, соотношение сторон, прозрачность.

При вызове __toString метод из помощника (это происходит, когда вы вызываете echo $helperInstance), изображение с измененным размером генерируется, если оно не существует, и возвращается URL для него.
Способ __toString из помощника вызывается saveFile и getUrl методы из модели.

Тот Самый saveFile метод из модели вызывает getImageProcessor()->save() способ, при котором getImageProcessor возвращает экземпляр Varien_Image.это использует "адаптер" для обработки изображения.Этот адаптер по умолчанию является экземпляром Varien_Image_Adapter_Gd2.
Вы можете начать с проверки того, что делают эти классы, и идти дальше глубже.

Идея заключается в том, что этот адаптер использует одну из следующих функций php в зависимости от типа изображения:

  • magecreatefromgif - для GIF
  • imagecreatefromjpeg - для JPEG
  • imagecreatefrompng - для png
  • imagecreatefromxbm - для XBM и wbmp
Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top