При запуске Page Speed в Google Chrome предлагается оптимизировать / сжимать изображения. Эти изображения в основном загружаются пользователями, поэтому мне нужно будет оптимизировать их во время загрузки. То, что я нахожу в оптимизации jpeg-изображений с помощью php, похоже на использование следующих функций GD:
getimagesize() imagecreatefromjpeg() imagejpeg()
Поскольку я изменяю размеры изображений после загрузки, я уже imagecopyresampled()
изображение через эти функции, и кроме того, я использую imagecopyresampled()
после imagecreatefromjpeg()
чтобы изменить его размер.
Но тогда скорость страницы все еще говорит мне, что эти изображения могут быть оптимизированы. Как я могу выполнить эту оптимизацию в php-скрипте? Устанавливать качество ниже в imagejpeg () тоже не имеет значения.
Функция imagejpeg – это то, где вы назначаете качество. Если вы уже устанавливаете это на соответствующее значение, вы можете сделать еще немного.
Скорость страницы, вероятно, считает, что все изображения выше определенного размера «нуждаются в сжатии», возможно, просто убедитесь, что они все настолько малы, насколько это разумно (с точки зрения высоты / ширины) и сжаты.
Вы можете узнать больше о скорости страницы и предложениях по сжатию в документах pagespeed http://code.google.com/speed/page-speed/docs/payload.html#CompressImages, в которых описаны некоторые методы / инструменты для сжатия соответствующим образом.
Я также просто прочитал следующее:
Доступны несколько инструментов, которые обеспечивают дальнейшее сжатие без потерь в файлах JPEG и PNG без влияния на качество изображения. Для JPEG мы рекомендуем jpegtran или jpegoptim (доступно только для Linux, запустите с опцией –strip-all). Для PNG мы рекомендуем OptiPNG или PNGOUT .
Поэтому, возможно (если вы действительно хотите придерживаться предложений Google), вы можете использовать PHP exec
для запуска одного из этих инструментов в файлах по мере их загрузки.
Для сжатия с помощью php вы делаете следующее (такие звуки, как вы уже делаете):
Где $source_url
– это изображение, $destination_url
– это $destination_url
для сохранения, а $quality
– число от 1 до 100, выбирающее, сколько jpeg-сжатия использовать.
function compressImage($source_url, $destination_url, $quality) { $info = getimagesize($source_url); if ($info['mime'] == 'image/jpeg') $image = imagecreatefromjpeg($source_url); elseif ($info['mime'] == 'image/gif') $image = imagecreatefromgif($source_url); elseif ($info['mime'] == 'image/png') $image = imagecreatefrompng($source_url); //save file imagejpeg($image, $destination_url, $quality); //return destination file return $destination_url; }
Отремонтированная функция:
function compressImage($source_url, $destination_url, $quality) { //$quality :: 0 - 100 if( $destination_url == NULL || $destination_url == "" ) $destination_url = $source_url; $info = getimagesize($source_url); if ($info['mime'] == 'image/jpeg' || $info['mime'] == 'image/jpg') { $image = imagecreatefromjpeg($source_url); //save file //ranges from 0 (worst quality, smaller file) to 100 (best quality, biggest file). The default is the default IJG quality value (about 75). imagejpeg($image, $destination_url, $quality); //Free up memory imagedestroy($image); } elseif ($info['mime'] == 'image/png') { $image = imagecreatefrompng($source_url); imageAlphaBlending($image, true); imageSaveAlpha($image, true); /* chang to png quality */ $png_quality = 9 - round(($quality / 100 ) * 9 ); imagePng($image, $destination_url, $png_quality);//Compression level: from 0 (no compression) to 9(full compression). //Free up memory imagedestroy($image); }else return FALSE; return $destination_url; }
очень важно оптимизировать ваши изображения. На некоторых платформах CMS есть модули или плагины для подготовки этого процесса. Однако, если вы сами программируете, есть полный учебник по php, расположенный на этой странице https://a1websitepro.com/optimize-images-with-php-in-a-directory-on-your-server/. Вам будет показано, как для реализации imagecreatefromjpeg($SrcImage);
и imagecreatefrompng($SrcImage);
и imagecreatefromgif($SrcImage);
На странице написаны видео и видео.