alexivchenko Опубликовано 29 апреля, 2021 Жалоба Поделиться Опубликовано 29 апреля, 2021 (изменено) 2 минуты назад, get31 сказал: в линии 38 у меня как раз: $info = getimagesize($resized_filename); но папка точно есть, т.к без добавления webp все работает Дальше смотрим в api/Design.php, api/Image.php и в .htaccess, где конфликт resized_filename Изменено 29 апреля, 2021 пользователем alexivchenko Цитата Ссылка на сообщение Поделиться на другие сайты
get31 Опубликовано 29 апреля, 2021 Жалоба Поделиться Опубликовано 29 апреля, 2021 (изменено) 30 минут назад, alexivchenko сказал: Дальше смотрим в api/Design.php, api/Image.php и в .htaccess, где конфликт resized_filename У меня стоит вот так: Design.php public function resize_modifier($filename, $width=0, $height=0, $set_watermark=false) { $resized_filename = $this->image->add_resize_params($filename, $width, $height, $set_watermark); $resized_filename_encoded = $resized_filename; $size = ($width?$width:0).'x'.($height?$height:0).($set_watermark?"w":''); $image_sizes = array(); if($this->settings->image_sizes) $image_sizes = explode('|',$this->settings->image_sizes); if(!in_array($size, $image_sizes)){ $image_sizes[] = $size; $this->settings->image_sizes = implode('|',$image_sizes); } if(substr($resized_filename_encoded, 0, 7) == 'http://') $resized_filename_encoded = rawurlencode($resized_filename_encoded); $resized_filename_encoded = rawurlencode($resized_filename_encoded); return $this->config->root_url.'/'.$this->config->resized_images_dir.$resized_filename_encoded/*.'?'.$this->config->token($resized_filename)*/; } Image.php public function add_resize_params($filename, $width=0, $height=0, $set_watermark=false) { if('.' != ($dirname = pathinfo($filename, PATHINFO_DIRNAME))) $file = $dirname.'/'.pathinfo($filename, PATHINFO_FILENAME); else $file = pathinfo($filename, PATHINFO_FILENAME); $ext = pathinfo($filename, PATHINFO_EXTENSION); if($width>0 || $height>0) $resized_filename = $file.'.'.($width>0?$width:'').'x'.($height>0?$height:'').($set_watermark?'w':'').'.'.$ext; else $resized_filename = $file.'.'.($set_watermark?'w.':'').$ext; return $resized_filename; } .htaccess - resized_filename вообще нет resize/resize.php <?php chdir('..'); require_once('api/Simpla.php'); $filename = $_GET['file']; $token = $_GET['token']; $filename = str_replace('%2F', '/', $filename); //if(substr($filename, 0, 6) == 'http:/') // $filename = 'http://'.substr($filename, 6); $simpla = new Simpla(); //if(!$simpla->config->check_token($filename, $token)) //exit('bad token'); $resized_filename = $simpla->image->resize($filename); //if(is_readable($resized_filename)) // header('Location: '.$_SERVER['REQUEST_URI']); if(is_readable($resized_filename)) { header('Content-type: image'); print file_get_contents($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); } } Изменено 29 апреля, 2021 пользователем get31 Цитата Ссылка на сообщение Поделиться на другие сайты
get31 Опубликовано 29 апреля, 2021 Жалоба Поделиться Опубликовано 29 апреля, 2021 Разобрался в чем была проблема use_imagick = false; Подскажите, а так и должно быть? Если фото не обработалось до webp, но в урле меняем формат на webp, отображается ошибка: Fatal error: Uncaught exception 'ImagickException' with message 'unable to open image `/home/virtwww/site/http/files/originals/2_16.webp': No such file or directory @ error/blob.c/OpenBlob/2874' in /home/virtwww/site/http/api/Image.php:366 Stack trace: #0 /home/virtwww/site/http/api/Image.php(366): Imagick->readimage('/home/virtwww/w...') #1 /home/virtwww/site/http/api/Image.php(78): Image->image_constrain_imagick('/home/virtwww/w...', '/home/virtwww/w...', '527', '800', NULL, '50', '50', 0.8, 0.2) #2 /home/virtwww/site/http/resize/resize.php(24): Image->resize('2_16.527x800.we...') #3 {main} thrown in /home/virtwww/site/http/api/Image.php on line 366 Цитата Ссылка на сообщение Поделиться на другие сайты
get31 Опубликовано 5 мая, 2021 Жалоба Поделиться Опубликовано 5 мая, 2021 Друзья, подскажите пожалуйста. Работает, но после удаления файлов из папки products на некоторые товары ошибка Warning: getimagesize(Z:\home\localhost\www\site/files/products/591970VCQR1-3458.450x600.webp) [function.getimagesize]: failed to open stream: No such file or directory in Z:\home\localhost\www\justbutik\resize\resize.php on line 85 почему ругается на $info = getimagesize($resized_filename); ? Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 6 мая, 2021 Жалоба Поделиться Опубликовано 6 мая, 2021 20 часов назад, get31 сказал: Друзья, подскажите пожалуйста. Работает, но после удаления файлов из папки products на некоторые товары ошибка Warning: getimagesize(Z:\home\localhost\www\site/files/products/591970VCQR1-3458.450x600.webp) [function.getimagesize]: failed to open stream: No such file or directory in Z:\home\localhost\www\justbutik\resize\resize.php on line 85 почему ругается на $info = getimagesize($resized_filename); ? Потому что файла не существует. Я бы добавил дополнительную проверку на существование файла. Цитата Ссылка на сообщение Поделиться на другие сайты
get31 Опубликовано 7 мая, 2021 Жалоба Поделиться Опубликовано 7 мая, 2021 22 часа назад, Noxter сказал: Потому что файла не существует. Я бы добавил дополнительную проверку на существование файла. так выводить проверку?? {if $product->image->filename|resize:450:600|replace:'.jpg':'.webp'|replace:'.png':'.webp'} <img src="{$product->image->filename|resize:450:600|replace:'.jpg':'.webp'|replace:'.png':'.webp'}" type="image/webp" /> {else} <img src="{$product->image->filename|resize:450:600}" /> {/if} Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 8 мая, 2021 Жалоба Поделиться Опубликовано 8 мая, 2021 В PHP! Цитата Ссылка на сообщение Поделиться на другие сайты
arhean Опубликовано 10 июня, 2021 Жалоба Поделиться Опубликовано 10 июня, 2021 (изменено) Почему не генерируются файлы с расширением .webp при таком коде? Если я вставлю просто картинку в стандартном формате, то генерируется картинка в формате .jpg и в .webp, а если вставляю этот код, то генерация не происходит. Как инициализировать генерацию картинок при запросе к картинке в формате .webp? <picture> <source srcset="{$product->image->filename|resize:500:500|replace:'.jpg':'.webp'|replace:'.png':'.webp'}" type="image/webp" > <source srcset="{$product->image->filename|resize:500:500}" type="image/jpeg" > <img src="{$product->image->filename|resize:500:500}" alt="{$product->name|escape}" > </picture> Изменено 10 июня, 2021 пользователем arhean Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 10 июня, 2021 Жалоба Поделиться Опубликовано 10 июня, 2021 Не генерируются, скорее всего, потому, что в функции resize такого не предусмотрено... Чтобы обрабатывались исходные картинки в формате .webp, надо программировать все нужное. Двумя строками вряд ли обойдетесь... Цитата Ссылка на сообщение Поделиться на другие сайты
arhean Опубликовано 11 июня, 2021 Жалоба Поделиться Опубликовано 11 июня, 2021 В 06.05.2021 в 14:02, Noxter сказал: Потому что файла не существует. Я бы добавил дополнительную проверку на существование файла. Не подскажите как сделать дополнительную проверку на наличие файла или сделать так, что бы файл создавался сам при инициализации изображения в формате webp? Цитата Ссылка на сообщение Поделиться на другие сайты
arhean Опубликовано 15 июня, 2021 Жалоба Поделиться Опубликовано 15 июня, 2021 (изменено) Пока что нашел временное тупое решение -> в вашем шаблоне -> product.tpl вставить вместо изображения {if $smarty.session.admin == 'admin'} <div style="display:none;"> <img src="{$product->image->filename|resize:500:500}"> {*указать картинки со всеми размерами, которые генерируются на сайте*} </div> {/if} <picture> <source srcset="{$product->image->filename|resize:500:500|replace:'.jpg':'.webp'|replace:'.png':'.webp'}" type="image/webp"> <img src="{$product->image->filename|resize:500:500}" alt="{$product->name|escape}"> </picture> Соответственно после создания товара переходим на его страницу и изображения генерируются. Так как я всегда смотрю на карточку товара после создания, то данное решение не обременяет меня лишним нажатием на кнопку. Изменено 15 июня, 2021 пользователем arhean Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.