php 生成 webp,使用PHP脚本批量转换webp文件为png文件

php 生成 webp,使用PHP脚本批量转换webp文件为png文件WebP 是一种主要应用于网页上的图片格式 由谷歌推出

218fd6e945f9171e7072dd190d8d81ee.png

WebP是一种主要应用于网页上的图片格式,由谷歌推出。

目的是能够更有效的压缩图片,来节省图片传输所消耗的时间和服务器带宽。

但是毕竟应用场景有限,所以有时候需要将webp转换为png图片。

引言

在试了几个能够转换webp为png的网站后,发现了几个问题。转换为png后,透明图层变成了白色图层,这个是不希望的。

不支持批量转换,或者设置了批量转换门槛(比如收费,限制同时转换数量等)。

在懒得下载一个专门转换格式用的软件情况下,我决定自己动手造个轮子。

安装官方包

首先需要webp包,谷歌提供了官方包,可以在这里下载:

https://storage.googleapis.com/downloads.webmproject.org/releases/webp/index.html

不过ubuntu下可以直接通过apt命令安装webp包,centos应该也有,很方便(以ubuntu举例):apt update

apt install webp

安装后,输入 dwebp ,如果返回的不是 dwebp: command not found,那么就安装成功了。

dwebp pic.webp -o pic.png就能将webp文件转换为png文件。

使用PHP脚本

接下来让他能够批量转换,我使用了世界上最好的语言(PHP)编写脚本:// 获取原始文件夹名称

if(!isset($argv[1])) {

die('Please enter the original folder path.'.PHP_EOL);

}

// 判断文件夹路径是绝对路径还是相对路径

if(substr($argv[1], 0, 1) == '/') {

$path_folder = $argv[1];

}

else {

$path_folder = __DIR__.'/'.$argv[1];

}

if(substr($argv[1], -1) != '/') {

$path_folder .= '/';

}

// 判断文件夹是否存在

if(!is_dir($path_folder)) {

die('Original folder does not exist.'.PHP_EOL);

}

// 创建结果输出文件夹

$output_folder = __DIR__.'/'.time().'-png';

if(!mkdir($output_folder)) {

die('Failed to create folder, please check the permissions of the current path.'.PHP_EOL);

}

// 遍历原始文件夹

$folder = scandir($path_folder);

foreach($folder as $webp_file) {

// 获取文件扩展名为.webp的的文件

if(substr($webp_file, -4) == '.webp') {

// 除扩展名外,输出的文件名和输入文件名相同

$result_name = str_replace('.webp', '.png', $webp_file);

// 调用shell命令

$run_result = shell_exec('dwebp '.$path_folder.$webp_file.' -o '.$output_folder.'/'.$result_name);

}

}

die('Successful conversion, folder path: '.$output_folder.PHP_EOL);

用法很简单,将以上代码放入php文件中,通过cli方式调用,传参要转换的文件夹(绝对路径和相对路径皆可),就可以把文件夹内所有webp转换为png了,举例:php webp_converter.php webp_folder

或php webp_converter.php /home/webp_folder

注意事项脚本会在php文件目录下创建一个输出png图片的文件夹,请确保当前php路径有写入权限。

脚本会调用shell_exec函数,所以如果发现转换失败了,请检查是否开启了PHP的安全模式。

如果需要用sudo php ...的方式来调用,代码中的$argv[1]需要改成$argv[2],因为传参的顺序改变了。

今天的文章 php 生成 webp,使用PHP脚本批量转换webp文件为png文件分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2024-12-27 07:11
下一篇 2024-12-27 07:06

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/96431.html