首页 >后端开发 >php教程 >将 Base64 字符串转换为 JPEG 时如何修复'无效图像”错误?

将 Base64 字符串转换为 JPEG 时如何修复'无效图像”错误?

Linda Hamilton
Linda Hamilton原创
2024-12-14 06:14:11238浏览

How to Fix

将 Base64 字符串转换为图像文件

将 Base64 编码的字符串转换为图像文件可能很简单,但如果出现以下情况,可能会出现错误没有正确处理。其中一个错误是无效图像。

问题:

尝试使用以下代码将 Base64 字符串转换为图像文件时:

function base64_to_jpeg($base64_string, $output_file) {
    $ifp = fopen( $output_file, "wb" );
    fwrite( $ifp, base64_decode( $base64_string) );
    fclose( $ifp );
    return( $output_file );
}

$image = base64_to_jpeg( $my_base64_string, 'tmp.jpg' );

您可能会遇到错误,指出“无效图片。”

解决方案:

错误源于编码内容中包含 data:image/png;base64。这些额外的数据会干扰 Base64 解码过程并导致无效的图像文件。要解决此问题,请在解码字符串之前删除冗余数据:

function base64_to_jpeg($base64_string, $output_file) {
    // open the output file for writing
    $ifp = fopen($output_file, 'wb');

    // split the string on commas
    // $data[0] == "data:image/png;base64"
    // $data[1] == <actual base64 string>
    $data = explode(',', $base64_string);

    // we could add validation here with ensuring count( $data ) > 1
    fwrite($ifp, base64_decode($data[1]));

    // clean up the file resource
    fclose($ifp);

    return $output_file;
}

通过删除不必要的数据并确保仅解码实际的 Base64 编码字符串,您将成功将字符串转换为有效的字符串图像文件。

以上是将 Base64 字符串转换为 JPEG 时如何修复'无效图像”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn