PHP图像优化函数
与Next.js和Nuxt.js等前端框架中常用的图像优化组件一样,我创建了一个PHP函数,通过传递图像路径返回优化的图像。这可以优化从外部存储、CMS等接收的图像。
演示
PHP版本是8.1.22。
也使用GD。
第 1 步:创建 API 来调整图像大小并将图像转换为 WebP
// _image.php <?php $url = $_REQUEST["url"]; $size["W"] = $_REQUEST["w"]; $img_data = file_get_contents($url); $base_img = imagecreatefromstring($img_data); list($base_w, $base_h) = getimagesizefromstring($img_data); $zoom = $size["W"] / $base_w; $image = imagecreatetruecolor($size["W"], $base_h * $zoom); imagecopyresampled($image, $base_img, 0, 0, 0, 0, $size["W"], $base_h * $zoom, $base_w, $base_h); header("Content-Type: image/webp"); header("cache-control: max-age=2592000"); imagewebp($image); imagedestroy($base_img); imagedestroy($image);
我们建议限制可以访问此 API 的来源和引用者,以及限制要优化的图像 URL 的域。文章来源:https://www.toymoban.com/diary/php/368.html
步骤:2 创建一个函数来生成<img>用于显示优化图像的标签。
// get_optimized_image.php <?php function get_path($img_path = "", $size = 390) { return "/_image.php?url=$img_path&w=$size " . $size . "w"; }; function get_optimized_image($attributes) { $breakpoint = [390, 768, 1024, 1280, 1920]; // Feel free to adjust the breakpoint values to your preference. $imgs = array_map(function ($val) use ($attributes) { return get_path($attributes["src"], $val); }, $breakpoint); $attributes["srcset"] = implode(", ", $imgs); ?> <img <?php foreach ($attributes as $key => $value) { if ($value) { echo " {$key}=\"{$value}\""; } } ?> /> <?php }; ?>
第 3 步:显示优化后的图像
// index.php <?php include_once('get_optimized_image.php'); ?> <body> <?php get_optimized_image(["src" => "https://example.com/example.jpg"]) ?> </body>
文章来源地址https://www.toymoban.com/diary/php/368.html
到此这篇关于在 PHP 中创建图像优化函数 | PHP图片优化的文章就介绍到这了,更多相关内容可以在右上角搜索或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!