📜  php base64img 到文件 - PHP (1)

📅  最后修改于: 2023-12-03 14:45:10.629000             🧑  作者: Mango

PHP实现将Base64图片转为文件

在日常的 Web 开发中,经常会用到前端传输图片,而前端通常是将图片转为Base64 字符串。但是在后端处理时,我们往往需要将这个Base64字符串转为图片文件,以便我们进行其他的操作,如存储到服务器磁盘上或是再次转存到其他存储方式。

本文将为大家介绍如何使用 PHP 来实现将Base64图片转为文件的操作。示例代码如下:

/**
 * Base64图片转为文件
 * 
 * @param string $base64Data Base64图片字符串
 * @param string $savePath 保存路径
 * @return bool|string 成功返回 true,失败返回错误信息 
 */
function base64ToImg($base64Data, $savePath)
{
    if (preg_match('/^(data:\s*?image\/(\w+)\s*?;base64,)/', $base64Data, $matches)) {
        $type = $matches[2];
        $newBase64Data = str_replace($matches[1], '', $base64Data);
        $fileData = base64_decode($newBase64Data);
        if (file_put_contents($savePath, $fileData)) {
            return true;
        } else {
            return '写入文件失败';
        }
    } else {
        return 'Base64格式错误';
    }
}

以上代码中,我们传入了两个参数:

  • $base64Data:Base64图片字符串
  • $savePath:保存路径

这个函数的作用就是将 $base64Data 中的图片数据解析出来,然后写入到 $savePath 文件中。如果该操作成功,则返回 true,否则返回错误信息。

该函数的具体实现如下:

  1. 通过正则表达式匹配出 Base64 字符串头部内容,包括文件格式和数据类型;
  2. 将匹配出来的头部信息删除,留下文件数据;
  3. 将文件数据解码成二进制文件,并保存到指定的文件路径中。

使用该函数非常简单,只需要调用该函数并传入 Base64 字符串和文件保存路径即可,以下是调用实例:

$base64Data = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAX...';
$savePath = '/path/to/new/image.png';

if (base64ToImg($base64Data, $savePath) === true) {
    echo '保存成功!';
} else {
    echo '保存失败!';
}

如果输出的是 保存成功!则表示该操作成功,否则打印的是错误信息,我们需要检查一下输出信息以确认错误原因。

以上就是将Base64图片转为文件的 PHP 实现方式,如果您在开发过程中有类似的需求,可以使用该函数实现。