Как работает генерация изображений продукта в Magento?
-
13-12-2019 - |
Вопрос
Как работает генерация изображений продукта в 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
- для GIFimagecreatefromjpeg
- для JPEGimagecreatefrompng
- для pngimagecreatefromxbm
- для XBM и wbmp