【优化】PHP图像压缩
AI-摘要
Tianli GPT
AI初始化中...
介绍自己
生成本文简介
推荐相关文章
前往主页
前往tianli博客
你的站点因为图片加载而反应慢嘛?
一个图片动辄1-2Mb?
快来部署一个图像转换压缩接口吧 体验图像压缩后的极致速度🤖🤖
操作方法
建立站点
部署代码
创建一个index.php 文件,将以下代码写入
<?php
ini_set('memory_limit', '256M');
// 获取传入的图像地址
if (isset($_GET['img_url'])) {
$imgUrl = $_GET['img_url'];
$file_data = file_get_contents($imgUrl);
// 将图像内容保存成临时文件
$uniqueString = uniqid() . '_' . mt_rand();
$tempImagePath = 'temp_images/temp_image_' . $uniqueString . '.tmp';
file_put_contents($tempImagePath, $file_data);
// 获取临时图像文件的信息
$imgInfo = getimagesize($tempImagePath);
if ($imgInfo) {
list($width, $height, $imgType) = $imgInfo;
// 根据图像类型打开图像
if ($imgType === IMAGETYPE_WEBP) {
// 设置响应头
header('Content-Type: image/webp');
readfile($tempImagePath); // 直接输出原始WebP图像
} elseif ($imgType === IMAGETYPE_JPEG || $imgType === IMAGETYPE_PNG) {
$inputImage = imagecreatefromstring($file_data);
// // 下载并保存原始图像 测试压缩率的
// $imgFolder = 'img/';
// $originalImagePath = $imgFolder . 'original_image' . image_type_to_extension($imgType);
// file_put_contents($originalImagePath, $file_data);
if ($inputImage) {
// 创建输出WebP图像
ob_start();
imagewebp($inputImage, null, 80);
$webpContent = ob_get_clean();
// 设置响应头
header('Content-Type: image/webp');
header('Content-Length: ' . strlen($webpContent));
// 输出WebP图像
echo $webpContent;
// 释放资源
imagedestroy($inputImage);
} else {
echo "无法打开图像。";
}
} else {
echo "不支持的图像类型。仅支持JPEG、PNG和WebP图像。";
}
// 删除临时图像文件
unlink($tempImagePath);
} else {
echo "无法获取图像信息。";
}
} else {
echo "请提供img_url参数,指定图像地址。";
}
使用
然后,你可以通过传递img_url参数来调用这个接口,如下所示
http://your-domain.com/?img_url=http://your-domain.com/image.jpg
这就可以直接输出转换后的WebP图像。
但请确保你的服务器支持getimagesize
、GD库
扩展以及HTTP头
设置 推荐使用PHP7.4
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 TryHarder_
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果