要在 Apache 服务器上使用 PHP 7.4 实现当浏览器支持 WebP 格式时,将 JPEG 图片动态转换为 WebP 并传送给客户端,但在网页源代码中仍显示为 JPEG 格式的图片链接,可以通过以下方法实现:
- Dynamic Image Conversion: 在请求 JPEG 格式的图片时,通过 PHP 脚本动态将其转换为 WebP 格式。这样即使源代码中的图片链接是 JPEG 格式,浏览器支持 WebP 的情况下会接收到 WebP 格式的图片。
- URL Rewrite: 使用 Apache 的 mod_rewrite 模块将图片 URL 重写为指向 PHP 脚本的 URL,以便触发动态转换。这样可以隐藏实际图片路径并使得终端用户无感知。
以下是一个简单的示例代码,用于将 JPEG 图片动态转换为 WebP 并发送给客户端,同时在网页源代码中显示 JPEG 格式的图片链接:
- Apache 配置(.htaccess):
# Enable mod_rewrite
RewriteEngine On
# Rewrite rule to redirect JPEG images to PHP script for dynamic conversion
RewriteRule ^(.*\.jpg)$ convert.php?image=$1 [L]
- PHP 转换脚本(convert.php):
<?php
$jpegFile = $_GET['image'];
if (file_exists($jpegFile)) {
// Check if browser supports WebP
$webpSupport = false;
if (isset($_SERVER['HTTP_ACCEPT']) && strpos($_SERVER['HTTP_ACCEPT'], 'image/webp') !== false) {
$webpSupport = true;
}
if ($webpSupport) {
// Convert JPEG to WebP
$img = imagecreatefromjpeg($jpegFile);
imagewebp($img);
// Set appropriate headers and output WebP image
header('Content-Type: image/webp');
} else {
// Send original JPEG image
header('Content-Type: image/jpeg');
readfile($jpegFile);
}
exit;
} else {
// Handle error if file not found
echo 'File not found.';
}
?>
通过以上配置和代码,当浏览器支持 WebP 格式时,访问 JPEG 图片的链接会动态转换为 WebP 格式并传送给客户端,同时在网页源代码中还是显示 JPEG 格式的图片链接。这样可以提高图片加载速度和节省带宽,同时使网页看起来更整洁。请注意在生产环境中进行适当测试并根据需求进行优化。
发表回复