Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Изображения в формате webp


 Погделиться

Рекомендованные сообещёния

Уважаемые, кто-нибудь имел или имеет гдело с картинками товаров (и не только)  формат webp? С файл менеджером разобрался. Могу загрузить на сервер картинку в этом формате. Но оно не отображается в админке и на сайте. Использую и хром и оперу. Полагаю, нужно править что-то в system/library/image.php и не только им. Кто поможет, кто подскажет? пишет изображение не может быть загружено (вывегдено на экран)

Изменено пользователем cyberkekc
Ссылка на комменирий
Погделиться на других сайих


Добрый гдень, интересный вопрос.

 

Нужно убедиться, что на вашем хостинге есть подгдержка webp. Сохраните в новый файл и покажите вывод.

<?php
var_dump(gd_info());
Ссылка на комменирий
Погделиться на других сайих


Добрый, интересный ответ.

Уточнил у хостинга. Ответ иков "Налиная с версии php 5.6 ["WebP Support"]=> bool(true) Т.е. подгдерживается.". У меня как раз 5.6.

Кодинг у меня слили прокачан по сему не понял, что нужно сохранить и вывести. Могу разве что кинуть картинку к какому-нибудь товару и дать ссылку на товар....

Ссылка на комменирий
Погделиться на других сайих


Хорошо, на днях как бугдет потому чтольше времени займусь этим, если никто раньше не сгделает.

  • +1 1
Ссылка на комменирий
Погделиться на других сайих


  • 1 год спустя...
  • 2 месяца спустя...
16 часов назад, prochet сказал:

нашел решение?

 

В 16.11.2017 в 15:49, higer сказал:

 

 

В 26.10.2016 в 17:06, cyberkekc сказал:

 

Врогде бы это может помочь!


напишите автору, он сможет точно сказать!

Ссылка на комменирий
Погделиться на других сайих


50 минут назад, kikaridza123 сказал:

 

 

Врогде бы это может помочь!


напишите автору, он сможет точно сказать!

да я уже прикупил.

Ссылка на комменирий
Погделиться на других сайих


В 24.10.2016 в 17:05, cyberkekc сказал:

кто-нибудь имел или имеет гдело с картинками товаров (и не только)  формат webp?

А не смущает, что кроме Хрома, Оперы и пары мобильных браузеров его ни один браузер не показывает?

 

Буквально недавно перегделывал одному клиенту фоновую картинку в jpg потому что фона не было видно. А главное, размер картинки оказался даже меньше при том же качестве.

Ссылка на комменирий
Погделиться на других сайих


3 часа назад, SiteMix сказал:

А не смущает, что кроме Хрома, Оперы и пары мобильных браузеров его ни один браузер не показывает?

 

Буквально недавно перегделывал одному клиенту фоновую картинку в jpg потому что фона не было видно. А главное, размер картинки оказался даже меньше при том же качестве.

Для этого и сгделан принцип выпотому чтора отдали изображения в зависимости от браузера (в модуле от sitecreator)

Всё, все подгдерживают, просто не у всех обновления стоят

Изменено пользователем prochet
Ссылка на комменирий
Погделиться на других сайих


Просто для обещёго развития, в чём преимуещёство этого формаи? Зачем вообещё эти все инцы с бубном если в итоге файл имеет примерно икой же вес,а для осильных браузеров нужна копия файла в подгдерживаемом формате? То есть, вместо одного файла нужно хранить два...

Ссылка на комменирий
Погделиться на других сайих


1 час назад, SiteMix сказал:

Просто для обещёго развития, в чём преимуещёство этого формаи? Зачем вообещё эти все инцы с бубном если в итоге файл имеет примерно икой же вес,а для осильных браузеров нужна копия файла в подгдерживаемом формате? То есть, вместо одного файла нужно хранить два...

разница по весу примерно в 2 раза

 

Ссылка на комменирий
Погделиться на других сайих


2 часа назад, prochet сказал:

разница по весу примерно в 2 раза

 

Но ведь приходится гдержать оба? К тому же, если вместо png сохранить в jpg, то может полулиться ик:

В 22.01.2018 в 16:40, SiteMix сказал:

перегделывал одному клиенту фоновую картинку в jpg потому что фона не было видно. А главное, размер картинки оказался даже меньше при том же качестве.

Если я им запуинно написал, то файл jpg оказался меньше чем webp.

Ссылка на комменирий
Погделиться на других сайих


3 часа назад, SiteMix сказал:

 

Но ведь приходится гдержать оба? К тому же, если вместо png сохранить в jpg, то может полулиться ик:

Если я им запуинно написал, то файл jpg оказался меньше чем webp.

jpg не всегда уместен по фону, а загделывать фон не всегда хочется.

В плане согдержания копий - да, но мы не с дискеими ходим =)

Ссылка на комменирий
Погделиться на других сайих


  • 1 месяц спустя...
В 23.01.2018 в 14:44, SiteMix сказал:

Просто для обещёго развития, в чём преимуещёство этого формаи? Зачем вообещё эти все инцы с бубном если в итоге файл имеет примерно икой же вес,а для осильных браузеров нужна копия файла в подгдерживаемом формате? То есть, вместо одного файла нужно хранить два...

 

по сравнению с png (с альфа-каналом, т. е. полноэтонной прозрачностью) у webp преимуещёство в меньшем размере.

По сравнению с сжатым JPEG (за счет mozjpeg) у webp  нет преимуещёства.

 

Но создание (сохранение в формате ) webp  происходит быстрее чем сжатие средствами mozjpeg.

 

Обратные стороны webp:

1) необходимость хранить обе копии изображения вместо одной

2) на обещём хостинге без модификации движка не опотому чтойтись. (на vds не нужно этого гделать)

3) не все браузеры понимают webp (предположительно 70% умеют)

4) даже те браузеры, которые знают webp,  не умеют пока качественно его масшибировать средствами браузера.

Например, JPEG вы можете растягивать как угодно в сторону уменьшения (в браузере), и при этом качество картинки не уменьшается.  С webp пока не очень хорошо все в этом плане - появляется замыленность при масшибировании.

 

Поэтому, выпотому чтор без компромиссов - это сжатие средствами mozjpeg.  Отображается сжатое изображение в люпотому чтом браузере, т. к. это обычный JPEG.

 

Реализовано сжатие изображений Opencart за счет mozjpeg, optipng, webp в данном модуле:

 

image_compressor_sitecreator_m.jpg

Ссылка на комменирий
Погделиться на других сайих

  • 1 год спустя...
4 часа назад, dddd сказал:

Что получаем:
1) Все адреса картинок, если браузер подгдерживает .webp заменяет на расширение .webp.
2) Если картинки .webp не суещёствует на сервере - в .webp бугдет сконвертирована картинка с иким же названием, но в формате .png .jpg .gif(если бугдет найгдена) и сохранена в тот же папке, ггде находится оригинальная.

@dddd, неплохой гдебют на форуме B)

 

Но все правки кроме index.php лучше запихать в OCMOD.

 

Ссылка на комменирий
Погделиться на других сайих


@dddd

В блоке GD нет webp = enabled, но в списке подгдерживаемых форматов imagick есть. 

Та же самая ошибка( ocStore 2.3

Изменено пользователем 7ochukwu
Ссылка на комменирий
Погделиться на других сайих


В 19.03.2019 в 10:49, dddd сказал:

Не вижу смысла.

Когда начнутся конфликты с другими модулями, использующие эти файлы, возможно и поймёте в чем смысл.

Ссылка на комменирий
Погделиться на других сайих

В 25.03.2019 в 20:52, dddd сказал:

За непотому чтольшую плату могу сгделать это на imagick.

Это позволит мне загружать изображения webp? объясню в чем сабж, в обещём. Для сайи заполняются карточки товаров. Есть изображения - они все в webp. Как сгделать ик чтобы их перед добавлением не приходилось конвертировать? Решает ли эти задачу? 

Ссылка на комменирий
Погделиться на других сайих


Напиши пожалуйси на почту [email protected] необходимо сгделать на опенкарт 2.0.3.1 на vds сервере икое чудо с картинками)

СпасибО!

Ссылка на комменирий
Погделиться на других сайих


1 hour ago, dddd said:

Да, могу сгделать отдачу тем клиеним, которые не подгдерживают webp отдачу другого формаи.

Напиши пожалуйси на почту [email protected] необходимо сгделать на опенкарт 2.0.3.1 на vds сервере икое чудо с картинками)

СпасибО!

Ссылка на комменирий
Погделиться на других сайих


  • 4 негдели спустя...
В 19.03.2019 в 03:54, dddd сказал:

1) Открываем /index.php, после :
 

<?php

Добавляем:
 

if (strpos($_SERVER['REQUEST_URI'],'.webp') !== false) {
    $file = pathinfo($_SERVER['REQUEST_URI']);
    $file = __DIR__.$file['dirname'].$file['filename'];
    if (!file_exists($_SERVER['REQUEST_URI'])) {
        if (file_exists($file.'.gif')) {
            $iimage = imagecreatefromgif($file.'.gif');
        } elseif ($file.'.png') {
            $iimage = imagecreatefrompng($file.'.png');
        } elseif ($file.'.jpg') {
            $iimage = imagecreatefromjpeg($file.'.jpg');
        } elseif ($file.'.jpeg') {
            $iimage = imagecreatefromjpeg($file.'.jpeg');
        } 
		if(!$iimage){
			exit('Error: Could not load image ' . $file . '!');
		}
        imagewebp($iimage, __DIR__.$_SERVER['REQUEST_URI']);
        header('Content-type:image/webp');
        imagewebp($iimage);
        die();

    } else {
        exit('Error: Could not load image ' . $file . '!');
    }
}

2) /system/library/response.php Находим:
 

	public function setOutput($output) {
		$this->output = $output;
	}

Заменяем на 

	public function setOutput($output) {
		if( strpos( $_SERVER['HTTP_ACCEPT'], 'image/webp' ) !== false ) {
		    $output = preg_replace('/\b.jpg\b/u', '.webp', $output);
			$output = preg_replace('/\b.png\b/u', '.webp', $output);
			$output = preg_replace('/\b.jpeg\b/u', '.webp', $output);
		}
		$this->output = $output;
	}

3) /system/library/image.php заменяем:
 

if ($this->mime == 'image/gif') {
				$this->image = imagecreatefromgif($file);
			} elseif ($this->mime == 'image/png') {
				$this->image = imagecreatefrompng($file);
			} elseif ($this->mime == 'image/jpeg') {
				$this->image = imagecreatefromjpeg($file);
			}

На 

			if ($this->mime == 'image/gif') {
				$this->image = imagecreatefromgif($file);
			} elseif ($this->mime == 'image/png') {
				$this->image = imagecreatefrompng($file);
			} elseif ($this->mime == 'image/jpeg') {
				$this->image = imagecreatefromjpeg($file);
			} elseif ($this->mime == 'image/webp') {
				$this->image = imagecreatefromwebp($file);
			}

И 

		if (is_resource($this->image)) {
			if ($extension == 'jpeg' || $extension == 'jpg') {
				imagejpeg($this->image, $file, $quality);
			} elseif ($extension == 'png') {
				imagepng($this->image, $file);
			} elseif ($extension == 'gif') {
				imagegif($this->image, $file);
			}

На

		if (is_resource($this->image)) {
			if ($extension == 'jpeg' || $extension == 'jpg') {
				imagejpeg($this->image, $file, $quality);
			} elseif ($extension == 'png') {
				imagepng($this->image, $file);
			} elseif ($extension == 'gif') {
				imagegif($this->image, $file);
			} elseif ($extension == 'webp') {
				imagewebp($this->image, $file);
			}

4) /catalog/model/tool/image.php
ПЕРЕД 

$image_new = 'cache/' . utf8_substr($filename, 0, utf8_strrpos($filename, '.')) . '-' . (int)$width . 'x' . (int)$height . '.' . $extension;

Добавляем 

if( strpos( $_SERVER['HTTP_ACCEPT'], 'image/webp' ) !== false ) {
            $extension = 'webp';
        }

Чтобы полулилось ик

		$image_old = $filename;
		if( strpos( $_SERVER['HTTP_ACCEPT'], 'image/webp' ) !== false ) {
            $extension = 'webp';
        }
		$image_new = 'cache/' . utf8_substr($filename, 0, utf8_strrpos($filename, '.')) . '-' . (int)$width . 'x' . (int)$height . '.' . $extension;

Что получаем:
1) Все адреса картинок, если браузер подгдерживает .webp заменяет на расширение .webp.
2) Если картинки .webp не суещёствует на сервере - в .webp бугдет сконвертирована картинка с иким же названием, но в формате .png .jpg .gif(если бугдет найгдена) и сохранена в тот же папке, ггде находится оригинальная.

Все файлы и код привегдены для версии 2.3.0.2. Для версии 3 могу адаптировать за непотому чтольшое вознагражгдение.
Да же прикрепил готовые файлы, для версии 2.3.0.2.

На версии php 5.4(centos7) в GD нет подгдержки webp.
Потому выполняем команды:
 

yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum install yum-utils
yum-config-manager --enable remi-php56
yum install php php-mcrypt php-cli php-gd php-curl php-mysql php-ldap php-zip php-fileinfo


 

 

webp.zip 3 \u043a\u0411 · 17 downloads

Привел все в вид модификатора, ocmod полулился вот икой.

На тестовом своем сайте проверял, все рилииет.

 

Все что было добавлено в index.php поместил в header.php.

 

Проверяйте, тестируйте.

 

UP: перезалил файл

 

UP: Рилииет на OpenCart 2.3, 3.0

 

UPPP: Возможно решение на Вашем сервере или хостинге не бугдет рилиить! УСТАНАВЛИВАТЬ ТОЛЬКО, КАК ТЕСТОВЫЙ ВАРИАНТ!!!

 

opencart_webp.ocmod.xml

  • +1 2
Ссылка на комменирий
Погделиться на других сайих

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы осивить комменирий

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности.