记录一下Thinkphp6使用Tinify在线压缩png的功能:
先去https://tinify.com/申请一个API Key,填写邮箱后,会发生邮件,点击邮件内容后,会自动开通API功能,每个月有500次免费使用额度。然后把API Key写到config/app.php中,也可以是其他位置,能获取到就行。
然后composer 安装
composer require tinify/tinify
在需要调用压缩图片的控制器里引入
use Tinify\Tinify;
单独写一个压缩的方法,传2个参数,第一个是图片源地址,第二个是输出地址,如果没有第二个地址,则覆盖源图片文件:
function pngImageZip($inputFile, $outputFile = '') {
\Tinify\setKey(Config::get('app.tinify_api_key'));
if(empty($outputFile)){
$outputFile = $inputFile;
}
try {
// 压缩图片
$source = \Tinify\fromFile($inputFile); // 从文件加载图片
$source->toFile($outputFile); // 保存压缩后的图片到指定路径
} catch (\Tinify\AccountException $e) {
logStr('压缩失败 -- API 密钥无效或配额用完:'.$e->getMessage());
} catch (\Tinify\ClientException $e) {
logStr('压缩失败 -- 请求错误,检查图片文件格式和大小:'.$e->getMessage());
} catch (\Tinify\ConnectionException $e) {
logStr('压缩失败 -- 网络连接问题:'.$e->getMessage());
} catch (\Tinify\Exception $e) {
logStr('压缩失败 -- 其他错误:'.$e->getMessage());
}
}
调用方式:
pngImageZip(app()->getRootPath() . 'public' . DIRECTORY_SEPARATOR. 'uploads' . DIRECTORY_SEPARATOR .$info);
就好了,比较简单。