question Опубликовано 12 февраля, 2019 Жалоба Поделиться Опубликовано 12 февраля, 2019 Хостинг? Напишите своему хостинг-провайдеру письмо о том, что на сервере webp support есть, но изображения webp не создаются через imagewebp. Пусть проверят.Предварительно (на всякий случай) очистите папку resized или в какую у вас записываются изображения с изменёнными размерами. Цитата Ссылка на сообщение Поделиться на другие сайты
Kami Опубликовано 12 февраля, 2019 Жалоба Поделиться Опубликовано 12 февраля, 2019 Хостинг? Напишите своему хостинг-провайдеру письмо о том, что на сервере webp support есть, но изображения webp не создаются через imagewebp. Пусть проверят.Предварительно (на всякий случай) очистите папку resized или в какую у вас записываются изображения с изменёнными размерами. измененные изображения по факту должны записываться в папку products же? а со статическими изображениями( фото бренда, фото категории) ? Ручками переделываете? Цитата Ссылка на сообщение Поделиться на другие сайты
question Опубликовано 12 февраля, 2019 Жалоба Поделиться Опубликовано 12 февраля, 2019 У меня это папка files/products, какая у вас - не знаю, все в настройках ставят как хотят.Фото категории у меня также сохраняются в этой папке как webp и как jpg. Брендов у меня нетОстальное (то, что в шаблоне) - да, руками Цитата Ссылка на сообщение Поделиться на другие сайты
Kami Опубликовано 12 февраля, 2019 Жалоба Поделиться Опубликовано 12 февраля, 2019 (изменено) У меня это папка files/products, какая у вас - не знаю, все в настройках ставят как хотят.Фото категории у меня также сохраняются в этой папке как webp и как jpg. Брендов у меня нетОстальное (то, что в шаблоне) - да, руками так а как фото категории у вас создается как webp если там ресайз не используется? Изменено 12 февраля, 2019 пользователем Kami Цитата Ссылка на сообщение Поделиться на другие сайты
question Опубликовано 12 февраля, 2019 Жалоба Поделиться Опубликовано 12 февраля, 2019 так а как фото категории у вас создается как webp если там ресайз не используется? У меня используется. Видимо, давно сделал по аналогии с товарами. Цитата Ссылка на сообщение Поделиться на другие сайты
question Опубликовано 14 февраля, 2019 Жалоба Поделиться Опубликовано 14 февраля, 2019 Kami, у вас что-то получилось? Цитата Ссылка на сообщение Поделиться на другие сайты
crfxtr123 Опубликовано 5 октября, 2019 Жалоба Поделиться Опубликовано 5 октября, 2019 что исправить? imagedestroy() expects parameter 1 to be resource, string given in /,,,,,,,,,,,,/resize/resize.php on line 29 Цитата Ссылка на сообщение Поделиться на другие сайты
crfxtr123 Опубликовано 6 октября, 2019 Жалоба Поделиться Опубликовано 6 октября, 2019 что исправить? 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 Цитата Ссылка на сообщение Поделиться на другие сайты
sanchez Опубликовано 10 декабря, 2019 Жалоба Поделиться Опубликовано 10 декабря, 2019 У меня - все, установленные на компьютере. С проблемой Сергеевича знаком, насколько помню, у него создавались webp изображения, но htaccess не обрабатывался - проблема была с настройками сервера. Потому он вам и задал вопрос - у вас webp изображения не создаются или браузер их не выводит? Вы не ответили, поэтому где у вас проблема, непонятно.Подскажите пожалуйста, закинул ваш код в .htaccess и в resize.php. Webp создается, но загоняю в pagespeed insights пишет что используется jpg. Что проверить чтоб загружался webp ? Пожалуйста https://github.com/claviska/SimpleImageСлаб в этом, подскажите куда и что заливать, пожалуйста. Пожалуйста https://github.com/claviska/SimpleImageя же правильно понимаю, это код, что б перевести все изображения jpg на сайте в webp ? Цитата Ссылка на сообщение Поделиться на другие сайты
FDA Опубликовано 13 декабря, 2019 Жалоба Поделиться Опубликовано 13 декабря, 2019 Я понял, что вы хотите, заодно разобрался с тем, что такое 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 не получается Цитата Ссылка на сообщение Поделиться на другие сайты
alexivchenko Опубликовано 13 декабря, 2019 Жалоба Поделиться Опубликовано 13 декабря, 2019 Все очень хорошо работает, остается только один вопрос, файлы .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); } } Цитата Ссылка на сообщение Поделиться на другие сайты
alexivchenko Опубликовано 13 декабря, 2019 Жалоба Поделиться Опубликовано 13 декабря, 2019 Но я бы лучше конвертировал картинки товаров в момент загрузки в .jpeg Цитата Ссылка на сообщение Поделиться на другие сайты
Kami Опубликовано 22 июня, 2020 Жалоба Поделиться Опубликовано 22 июня, 2020 Но я бы лучше конвертировал картинки товаров в момент загрузки в .jpeg а как поймать изображения и в jpg их перевести? при ресайзе? не подскажете? Цитата Ссылка на сообщение Поделиться на другие сайты
n1c Опубликовано 3 сентября, 2020 Жалоба Поделиться Опубликовано 3 сентября, 2020 У кого-то получилось?Обязательно версия php должна быть 5.6 и выше? или можно ниже? Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 3 сентября, 2020 Жалоба Поделиться Опубликовано 3 сентября, 2020 У кого-то получилось? Обязательно версия php должна быть 5.6 и выше? или можно ниже?Читаем доки, после смотрим в сторону готовой библиотеки. Цитата Ссылка на сообщение Поделиться на другие сайты
get31 Опубликовано 19 января, 2021 Жалоба Поделиться Опубликовано 19 января, 2021 В 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> вот с эти не работает, кто-то сталкивался с данной проблемой? Цитата Ссылка на сообщение Поделиться на другие сайты
Max3w Опубликовано 22 февраля, 2021 Жалоба Поделиться Опубликовано 22 февраля, 2021 В 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" Цитата Ссылка на сообщение Поделиться на другие сайты
Max3w Опубликовано 23 февраля, 2021 Жалоба Поделиться Опубликовано 23 февраля, 2021 Еще раз подытожу. 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 у вас в коде просто остаются ссылки. Цитата Ссылка на сообщение Поделиться на другие сайты
a13x Опубликовано 23 февраля, 2021 Жалоба Поделиться Опубликовано 23 февраля, 2021 if (file_exists($webp_filename)) { } else { Идеальное условие :))) Цитата Ссылка на сообщение Поделиться на другие сайты
daramal Опубликовано 4 марта, 2021 Жалоба Поделиться Опубликовано 4 марта, 2021 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, как это например, в том же яндекса маркете? Цитата Ссылка на сообщение Поделиться на другие сайты
daramal Опубликовано 4 марта, 2021 Жалоба Поделиться Опубликовано 4 марта, 2021 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. Цитата Ссылка на сообщение Поделиться на другие сайты
get31 Опубликовано 9 марта, 2021 Жалоба Поделиться Опубликовано 9 марта, 2021 Почему-то ругается на $info = getimagesize($resized_filename); Цитата Ссылка на сообщение Поделиться на другие сайты
get31 Опубликовано 29 апреля, 2021 Жалоба Поделиться Опубликовано 29 апреля, 2021 Друзья, подскажите пожалуйста, выдает ошибку 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 есть.... Из-за чего может ругаться? Цитата Ссылка на сообщение Поделиться на другие сайты
alexivchenko Опубликовано 29 апреля, 2021 Жалоба Поделиться Опубликовано 29 апреля, 2021 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 либо не может создать файл Цитата Ссылка на сообщение Поделиться на другие сайты
get31 Опубликовано 29 апреля, 2021 Жалоба Поделиться Опубликовано 29 апреля, 2021 2 минуты назад, alexivchenko сказал: Смотрите что у вас в линии 38 /home/virtwww/site/http/resize/resize.php on line 38 А так, получается, что либо нет папки в /config/config.php для вашего нового resize либо не может создать файл в линии 38 у меня как раз: $info = getimagesize($resized_filename); но папка точно есть, т.к без добавления webp все работает Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.