Thinkphp6使用Tinify压缩png

Tinify压缩 压缩png Thinkphp Tinify Thinkphp6使用Tinify Thinkphp6压缩 Thinkphp压缩图片 png压缩

记录一下Thinkphp6使用Tinify在线压缩png的功能:

先去https://tinify.com/申请一个API Key,填写邮箱后,会发生邮件,点击邮件内容后,会自动开通API功能,每个月有500次免费使用额度。然后把API Key写到config/app.php中,也可以是其他位置,能获取到就行。

然后composer 安装

composer require tinify/tinify

63/0d7509e929ac21d727279a337c49bf.png

在需要调用压缩图片的控制器里引入

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);

就好了,比较简单。



网站公告

承接各种网站、小程序、H5、公众号、CMS、CRM、OA等系统开发、维护、托管、外包等服务! 邮箱: 3163316168@qq.com