Получить эскиз изображения через вызов SOAP - PullRequest
3 голосов
/ 11 июня 2011

Я пытаюсь отобразить товары в своем магазине через стороннее приложение, использующее API веб-сервисов Magento. Когда я запрашиваю данные изображения для элемента, используя «catalog_product_attribute_media.list», я получаю что-то вроде этого:

Array
(
    [0] => Array
        (
            [file] => /a/k/akio-dresser.jpg
            [label] => 
            [position] => 1
            [exclude] => 1
            [url] => http://example.com/magento/media/catalog/product/a/k/akio-dresser.jpg
            [types] => Array
                (
                    [0] => thumbnail
                    [1] => small_image
                    [2] => image
                )

        )

)

Это говорит мне, что я должен быть в состоянии получить «thumbnail» или «small_image» версию этого изображения, но я не могу понять, как на самом деле это сделать. Я просмотрел документацию и перепробовал все, что смог найти, но безуспешно. Кто-нибудь еще знает, какой SOAP-вызов я мог бы использовать? Вызов catalog_product_attribute_media.info, похоже, возвращает точно такую ​​же информацию, а catalog_product_attribute_media.types, похоже, вообще ничего не возвращает.

1 Ответ

2 голосов
/ 14 июня 2011

Результат вызова API относится к исходному файлу (файлам) для изображений продукта, а не кешированных миниатюр / маленьких изображений, которые создаются во время выполнения, то есть при загрузке страницы продукта.

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

Magento масштабирует эти изображения на лету, это гораздо лучше, чем то, что вы получаете с некоторыми более старыми тележками, где вы должны получать изображения, подготовленные к «правильным» размерам. Однако это означает, что на диске нет ничего, кроме кэшированной копии миниатюры без вызова API для доступа к ней.

Я столкнулся с подобной проблемой, когда хотел получить изображения продуктов за пределами Magento. Мой обходной путь - использовать скрипт cron, чтобы вытащить большие оригинальные изображения, которые изменились за последние 24 часа, затем создать миниатюры с помощью imagemagick и затем использовать новую «локальную» копию изображения.
Это не было обходным путем, я на самом деле хотел сделать некоторую обработку командной строки для миниатюр, чтобы удалить лишние пробелы, заострить края и добавить дополнительную вибрацию к цветам. Эта обработка изображений не была реалистичной в реальном времени, и я все равно не хотел использовать «размытые» миниатюры по умолчанию. Ночная работа cron только на свежих изображениях сделала работу для меня.

...