Перейти к содержанию
Официальный форум поддержки Simpla

Рекомендуемые сообщения

Хостинг? Напишите своему хостинг-провайдеру письмо о том, что на сервере webp support есть, но изображения webp не создаются через imagewebp. Пусть проверят.

Предварительно (на всякий случай) очистите папку resized или в какую у вас записываются изображения с изменёнными размерами.

Ссылка на сообщение
Поделиться на другие сайты
  • Ответов 60
  • Дата создания
  • Последний ответ

Лучшие авторы в теме

Лучшие авторы в теме

Хостинг? Напишите своему хостинг-провайдеру письмо о том, что на сервере webp support есть, но изображения webp не создаются через imagewebp. Пусть проверят.

Предварительно (на всякий случай) очистите папку resized или в какую у вас записываются изображения с изменёнными размерами.

 

измененные изображения по факту должны записываться в папку products же? 

а со статическими изображениями( фото бренда, фото категории) ? Ручками переделываете?

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

У меня это папка files/products, какая у вас - не знаю, все в настройках ставят как хотят.

Фото категории у меня также сохраняются в этой папке как webp и как jpg. Брендов у меня нет

Остальное (то, что в шаблоне) - да, руками

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

У меня это папка files/products, какая у вас - не знаю, все в настройках ставят как хотят.

Фото категории у меня также сохраняются в этой папке как webp и как jpg. Брендов у меня нет

Остальное (то, что в шаблоне) - да, руками

 

так а как фото категории у вас создается как webp если там ресайз не используется? 

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

так а как фото категории у вас создается как webp если там ресайз не используется? 

У меня используется. Видимо, давно сделал по аналогии с товарами.

Ссылка на сообщение
Поделиться на другие сайты
  • 7 месяцев спустя...

что исправить? imagedestroy() expects parameter 1 to be resource, string given in /,,,,,,,,,,,,/resize/resize.php on line 29

ресайз webp создается только после клика по jpeg, вывожу через |replace:'.jpg':'.webp', картинок нет пишет the image could not be loaded

Ссылка на сообщение
Поделиться на другие сайты
  • 2 месяца спустя...

У меня - все, установленные на компьютере. С проблемой Сергеевича знаком, насколько помню, у него создавались webp изображения, но htaccess не обрабатывался - проблема была с настройками сервера. Потому он вам и задал вопрос - у вас webp изображения не создаются или браузер их не выводит? Вы не ответили, поэтому где у вас проблема, непонятно.

Подскажите пожалуйста, закинул ваш код в .htaccess и в resize.php. Webp создается, но загоняю в pagespeed insights пишет что используется jpg. Что проверить чтоб загружался webp ?

 

Слаб в этом, подскажите куда и что заливать, пожалуйста.

 

я же правильно понимаю, это код, что б перевести все изображения jpg на сайте в webp ?

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

 

Я понял, что вы хотите, заодно разобрался с тем, что такое webp, какие браузеры поддерживают этот формат и как распознать такой браузер.

Всё гениальное просто. Очень просто, но потратил на это весь вечер.

В resize.php в самый конец добавляете

 

 

 

 
$webp_filename = preg_replace('/\.[^.]+$/','',$resized_filename).".webp";
if (file_exists($webp_filename))
{
}
else
{
    $imagetoconvert = imagecreatefromjpeg($resized_filename);  
    imagewebp($imagetoconvert, $webp_filename, 80);
    imagedestroy($resized_filename);
}
 

 

 

Далее в htaccess прописываете

 


AddType image/webp .webp
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_ACCEPT} image/webp
RewriteCond %{DOCUMENT_ROOT}/$1.webp -f
RewriteRule (.+)\.(jpe?g|png)$ $1.webp [T=image/webp,E=accept:1]
</IfModule>
<IfModule mod_headers.c>
Header append Vary Accept env=REDIRECT_accept 
</IfModule> 


Все очень хорошо работает, остается только один вопрос, файлы .jpeg конвертируются, а вот с .png не получается

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

Все очень хорошо работает, остается только один вопрос, файлы .jpeg конвертируются, а вот с .png не получается

 

В /resize/resize.php заменить код 

 

$webp_filename = preg_replace('/\.[^.]+$/','',$resized_filename).".webp";
if (file_exists($webp_filename))
{
}
else
{
    $imagetoconvert = imagecreatefromjpeg($resized_filename);  
    imagewebp($imagetoconvert, $webp_filename, 80);
    imagedestroy($resized_filename);
}
 

 

на 

 

$webp_filename = preg_replace('/\.[^.]+$/','',$resized_filename).".webp";
$info = getimagesize($resized_filename);
if (file_exists($webp_filename)) {
} else {
	if ($info['mime'] == 'image/jpeg') {
		$imagetoconvert = imagecreatefromjpeg($resized_filename);  
		imagewebp($imagetoconvert, $webp_filename, 80);
		imagedestroy($resized_filename);
	} elseif ($info['mime'] == 'image/png') {
		$imagetoconvert = imagecreatefrompng($resized_filename);  
		imagewebp($imagetoconvert, $webp_filename, 80);
		imagedestroy($resized_filename);
	}
}
Ссылка на сообщение
Поделиться на другие сайты
  • 6 месяцев спустя...

Но я бы лучше конвертировал картинки товаров в момент загрузки в .jpeg

 

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

Ссылка на сообщение
Поделиться на другие сайты
  • 2 месяца спустя...

У кого-то получилось?

Обязательно версия php должна быть 5.6 и выше? или можно ниже?

Читаем доки, после смотрим в сторону готовой библиотеки.
Ссылка на сообщение
Поделиться на другие сайты
  • 4 месяца спустя...
В 11.12.2018 в 16:50, question сказал:

Странно, я ведь писал ответ...

Для начала в районе 300 строки

            return imageJpeg($dst_img, $dst_file, $quality);

надо заменить на 

            return imageWebp($dst_img, $dst_file, $quality);

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

Автору советую проверить на работоспособность такой код:


<?

$file='1.jpg';
$image= imagecreatefromjpeg($file);
imagewebp($image,'1.webp',80);
imagedestroy($image);

?>

Если 1.webp не создаётся, значит, у вашего хостера не установлены необходимые компоненты.

Попробовал с этим решением работает, webp создается, но с эти кодом не работает ?

 

В 11.12.2018 в 22:14, question сказал:

Я понял, что вы хотите, заодно разобрался с тем, что такое webp, какие браузеры поддерживают этот формат и как распознать такой браузер.

Всё гениальное просто. Очень просто, но потратил на это весь вечер.

В resize.php в самый конец добавляете

 

 

 


 
$webp_filename = preg_replace('/\.[^.]+$/','',$resized_filename).".webp";
if (file_exists($webp_filename))
{
}
else
{
    $imagetoconvert = imagecreatefromjpeg($resized_filename);  
    imagewebp($imagetoconvert, $webp_filename, 80);
    imagedestroy($resized_filename);
}
 

 

 

Далее в htaccess прописываете

 


AddType image/webp .webp
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_ACCEPT} image/webp
RewriteCond %{DOCUMENT_ROOT}/$1.webp -f
RewriteRule (.+)\.(jpe?g|png)$ $1.webp [T=image/webp,E=accept:1]
</IfModule>
<IfModule mod_headers.c>
Header append Vary Accept env=REDIRECT_accept 
</IfModule> 

 

вот с эти не работает, кто-то сталкивался с данной проблемой?

Ссылка на сообщение
Поделиться на другие сайты
  • 1 месяц спустя...
В 19.01.2021 в 16:40, get31 сказал:

Попробовал с этим решением работает, webp создается, но с эти кодом не работает ?

 

вот с эти не работает, кто-то сталкивался с данной проблемой?

Перед внесением изменений в htaccess, попросите уточните у хостера и попросите отключить обработку расширений jpg|jpeg|gif|png на стороне сервера. Некоторые хостеры (например хостингукраина и thehost) передают статику и картинки на nginx, и правила htaccess на них не действуют.

После отключения обработки статики этого правила редиректа заработают.

Так же надо не забывать добавить кеширование, т.к. сервер уже не будет обрабатывать картинки 

ExpiresActive On
 #кэшировать флэш и изображения на год
 ExpiresByType image/x-icon "access 1 year"
 ExpiresByType image/jpeg "access 1 year"
 ExpiresByType image/png "access 1 year"
 ExpiresByType image/gif "access 1 year"
 ExpiresByType image/webp "access 1 year"

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

Еще раз подытожу.

1) В /resize/resize.php добавляем код в самый конец

$webp_filename = preg_replace('/\.[^.]+$/','',$resized_filename).".webp";
$info = getimagesize($resized_filename);
if (file_exists($webp_filename)) {
} else {
	if ($info['mime'] == 'image/jpeg') {
		$imagetoconvert = imagecreatefromjpeg($resized_filename);  
		imagewebp($imagetoconvert, $webp_filename, 80);
		imagedestroy($resized_filename);
	} elseif ($info['mime'] == 'image/png') {
		$imagetoconvert = imagecreatefrompng($resized_filename);  
		imagewebp($imagetoconvert, $webp_filename, 80);
		imagedestroy($resized_filename);
	}
}

2) В .htaccess

AddType image/webp .webp
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_ACCEPT} image/webp
RewriteCond %{DOCUMENT_ROOT}/$1.webp -f
RewriteRule (.+)\.(jpe?g|png)$ $1.webp [T=image/webp,E=accept:1]
</IfModule>
<IfModule mod_headers.c>
Header append Vary Accept env=REDIRECT_accept 
</IfModule>

ExpiresActive On
 #кэшировать флэш и изображения на год
 ExpiresByType image/x-icon "access 1 year"
 ExpiresByType image/jpeg "access 1 year"
 ExpiresByType image/png "access 1 year"
 ExpiresByType image/gif "access 1 year"
 ExpiresByType image/webp "access 1 year"

3) Потом на сайте смотрим путь к картинкам товаров, обычно это /files/products. На хостинге по фтп меняем имя папки на products2 к примеру, создаем новую папку products пустую. Обновляем любую страницу на сайте. Новые картинки должны сгенерироватся в папке products и иметь свою вторую версию в webp.

4) Если картинки не герерируются - создаем в корне сайта файл phpinfo.php с содержимым

<?php phpinfo(); ?>

<?php
$file='1.jpg';
$image= imagecreatefromjpeg($file);
imagewebp($image,'1.webp',80);
imagedestroy($image);
echo ($file);
?>

Смотрим версию php, для работы функции imagewebp создания нужна версия php 5.5+

Загружаем в корень сайта картинку с именем 1.jpg

Открываем в браузере ссылку имя вашего сайта/phpinfo.php

Мотаем в самый низ, если строка echo ($file); вывела 1.jpg -  имя загруженой картинки - значит со стороны хостинга все работает, в корне должна появится картинка 1.webp

Если вывелась ошибка "вызов неопределенной функции imagewebp ()" - значит пинаем хостера/обновляем php.

5) Проверить работоспособность метода - первый признак это то что гугл перестает ругаться на оптимизацию формата картинок. Второй - жмем правой на картинке - проверить - вкладка Network - выбрать img, обновить страницу через ctrl+r, и посмотреть тип картинки. На товарах должен быть webp. Надо осознать что если вы скачаете на пк то получите .jpg, но это не показатель, браузер ориентируется по типу и грузит webp а не jpg. На jpg у вас в коде просто остаются ссылки.  

 

Ссылка на сообщение
Поделиться на другие сайты
  • 2 недели спустя...
On 2/23/2021 at 11:19 AM, Max3w said:

Еще раз подытожу.

1) В /resize/resize.php добавляем код в самый конец


$webp_filename = preg_replace('/\.[^.]+$/','',$resized_filename).".webp";
$info = getimagesize($resized_filename);
if (file_exists($webp_filename)) {
} else {
	if ($info['mime'] == 'image/jpeg') {
		$imagetoconvert = imagecreatefromjpeg($resized_filename);  
		imagewebp($imagetoconvert, $webp_filename, 80);
		imagedestroy($resized_filename);
	} elseif ($info['mime'] == 'image/png') {
		$imagetoconvert = imagecreatefrompng($resized_filename);  
		imagewebp($imagetoconvert, $webp_filename, 80);
		imagedestroy($resized_filename);
	}
}

2) В .htaccess


AddType image/webp .webp
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_ACCEPT} image/webp
RewriteCond %{DOCUMENT_ROOT}/$1.webp -f
RewriteRule (.+)\.(jpe?g|png)$ $1.webp [T=image/webp,E=accept:1]
</IfModule>
<IfModule mod_headers.c>
Header append Vary Accept env=REDIRECT_accept 
</IfModule>

ExpiresActive On
 #кэшировать флэш и изображения на год
 ExpiresByType image/x-icon "access 1 year"
 ExpiresByType image/jpeg "access 1 year"
 ExpiresByType image/png "access 1 year"
 ExpiresByType image/gif "access 1 year"
 ExpiresByType image/webp "access 1 year"

3) Потом на сайте смотрим путь к картинкам товаров, обычно это /files/products. На хостинге по фтп меняем имя папки на products2 к примеру, создаем новую папку products пустую. Обновляем любую страницу на сайте. Новые картинки должны сгенерироватся в папке products и иметь свою вторую версию в webp.

4) Если картинки не герерируются - создаем в корне сайта файл phpinfo.php с содержимым


<?php phpinfo(); ?>

<?php
$file='1.jpg';
$image= imagecreatefromjpeg($file);
imagewebp($image,'1.webp',80);
imagedestroy($image);
echo ($file);
?>

Смотрим версию php, для работы функции imagewebp создания нужна версия php 5.5+

Загружаем в корень сайта картинку с именем 1.jpg

Открываем в браузере ссылку имя вашего сайта/phpinfo.php

Мотаем в самый низ, если строка echo ($file); вывела 1.jpg -  имя загруженой картинки - значит со стороны хостинга все работает, в корне должна появится картинка 1.webp

Если вывелась ошибка "вызов неопределенной функции imagewebp ()" - значит пинаем хостера/обновляем php.

5) Проверить работоспособность метода - первый признак это то что гугл перестает ругаться на оптимизацию формата картинок. Второй - жмем правой на картинке - проверить - вкладка Network - выбрать img, обновить страницу через ctrl+r, и посмотреть тип картинки. На товарах должен быть webp. Надо осознать что если вы скачаете на пк то получите .jpg, но это не показатель, браузер ориентируется по типу и грузит webp а не jpg. На jpg у вас в коде просто остаются ссылки.  

 

Спасибо за решение. А как вообще избавиться от JPG/PNG? 

если к примеру попытаться сохранить картинку, чтоб сохранилась в WEBP, как это например, в том же яндекса маркете?

Ссылка на сообщение
Поделиться на другие сайты
On 2/23/2021 at 11:19 AM, Max3w said:

5) Проверить работоспособность метода - первый признак это то что гугл перестает ругаться на оптимизацию формата картинок. Второй - жмем правой на картинке - проверить - вкладка Network - выбрать img, обновить страницу через ctrl+r, и посмотреть тип картинки. На товарах должен быть webp. Надо осознать что если вы скачаете на пк то получите .jpg, но это не показатель, браузер ориентируется по типу и грузит webp а не jpg. На jpg у вас в коде просто остаются ссылки.  

в папке появились файлы с webp, но вот на сайте они не загрузились и во вкладке Network также jpg и png отображаются, не одного webp.

Ссылка на сообщение
Поделиться на другие сайты
  • 1 месяц спустя...

Друзья, подскажите пожалуйста, выдает ошибку

Warning: getimagesize(/home/virtwww/site/http/files/products/1_25.527x800.webp): failed to open stream: No such file or directory in /home/virtwww/site/http/resize/resize.php on line 38

getimagesize в Image.php есть....
Из-за чего может ругаться?

Ссылка на сообщение
Поделиться на другие сайты
2 минуты назад, get31 сказал:

Друзья, подскажите пожалуйста, выдает ошибку


Warning: getimagesize(/home/virtwww/site/http/files/products/1_25.527x800.webp): failed to open stream: No such file or directory in /home/virtwww/site/http/resize/resize.php on line 38

getimagesize в Image.php есть....
Из-за чего может ругаться?

Смотрите что у вас в линии 38 /home/virtwww/site/http/resize/resize.php on line 38

А так, получается, что либо нет папки в /config/config.php для вашего нового resize либо не может создать файл 

Ссылка на сообщение
Поделиться на другие сайты
2 минуты назад, alexivchenko сказал:

Смотрите что у вас в линии 38 /home/virtwww/site/http/resize/resize.php on line 38

А так, получается, что либо нет папки в /config/config.php для вашего нового resize либо не может создать файл 

в линии 38 у меня как раз:

$info = getimagesize($resized_filename);

но папка точно есть, т.к без добавления webp все работает

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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...