[Помогите] Как "прикрутить" BPG к opencart

Тема в разделе "OpenCart", создана пользователем cereberlum, 15 мар 2015.

  1. cereberlum

    cereberlum

    Регистрация:
    26 май 2013
    Сообщения:
    740
    Симпатии:
    266
    Заразился этой мыслью после прочтения этого поста Настройки, оптимизации, фичи, статьи для OpenCart Нашел способ преобразовать картинки. Я в первую очередь озаботился вопросом преобразования изображений в искомый формат, дело в том что имеющийся в сети конвертер конвертирует без сохранения структуры папок, что неудобно, особенно когда структура сложная, а изображений много. Заказал написание скрипта скрипта для преобразования, кому интересно лежит под хайдом.
    Работает скрипт на основе BPGconv.

    Теперь самое интересное, как интегрировать формат в cms, а именно: Опенкарт использует обработанные и кэшированные изображения. Как заставить опенкарт ресайзить изображения из BPG? А еще лучше как заставить ресайзить из BPG в BPG? Делитесь своими мыслями. Буду рад.
     
  2. ingenerks

    ingenerks

    Регистрация:
    25 окт 2012
    Сообщения:
    254
    Симпатии:
    79
    Тоже заинтриговало, но там сам автор который выложил инструкцию поверхностно все объяснил, мол все работает и так ))) По ходу после пережатия и подключения скрипта для отображения формата bpg и так должно все выносится. Но до конца не проверял. Есть в сети вариант как убрать вообще пережатие, может таким методом попробовать http://socialshow.ru/blogs/likeapim...ara-v-opencart-na-primere-versii-1-5-5-1.html
    Просто формат BPG и так делает очень маленькие по весу фотки, поэтому смысла пережимать еще раз нет скорее всего.
     
    cereberlum нравится это.
  3. cereberlum

    cereberlum

    Регистрация:
    26 май 2013
    Сообщения:
    740
    Симпатии:
    266
    Да, думал об этом, но далеко не лучший вариант, ведь картинки чаще всего разных пропорций, а при ресайзе где надо поля добавляются и все такое. Но вот хотя бы с чего начать, но вот например можно ли обойтись правками в sistem/library/url.php можно обойтись, или что-то еще надо? С чего бы начать, а то я как-то плохо себе представляю техническую сторону работы с разными форматами изображений.
     
  4. Vlad-i-Slav

    Vlad-i-Slav

    Регистрация:
    20 мар 2013
    Сообщения:
    251
    Симпатии:
    159
    На самом деле, чтобы нормально прикрутить эту фишку к ОС, нужно потратить немало времени и поправить много кода.
    А начать можно так:
    1. Конвертируем все изображения в .bpg
    2. Копируем в catalog\view\javascript файл bpgdec8b.js и подключаем его в catalog\view\theme\default\template\common\header.tpl
    3. Запрещаем кеширование и ресайз bpg (нет такой библиотеки) в catalog\model\tool\image.php :
    после
    if (!is_file(DIR_IMAGE . $filename)) {
    return;
    }​
    добавим
    if (end(explode(".", $filename))=='bpg') {
    return
    ($this->request->server['HTTPS'] ? $this->config->get('config_ssl') : $this->config->get('config_url')) . 'image/' . $filename;;
    }​
    4. Выводим все изображения с проверкой "А не bpg ли это?". Например, карточка товара:
    блок
    <?php if ($thumb || $images) { ?>
    ...​
    <?php } ?>​
    станет таким:
    --- Добавлено, 17 мар 2015 ---
    Да, еще: поскольку скрипт bpgdec8b.js преобразовывает bpg в canvas, то будут проблемы со стилями, в частности ширина-высота.
    Для того, чтобы установить размеры, нужно при выводе img добавлять атрибут width (Пример выше: width="<?php echo $image['width']; ?>")
    Поэтому в массиве с картинками нужно еще добавить установленную в настройках ширину. Для примера выше будет:
    в файле catalog\controller\product\product.php добавить в $data['images'] строку 'width' => $this->config->get('config_image_additional_width')
    foreach ($results as $result) {
    $data['images'][] = array(
    (примерно 312 строка)​
     
    cereberlum нравится это.