如何将图像从 base 64 转换为 PHP 中的文件类型?

How do I convert images from base 64 to their file types in PHP?

我有 objects 包含图像作为 base 64 字符串,object 还包含图像的文件名和图像的文件类型(jpeg、png、gif 和 bmp)。 Base 64 字符串已经有标签(例如 "data:image/png;base64" 从开头删除。

objects ($myImg) 的格式如下:

我的函数代码如下:

function toImg(ImageString $myImg){
    //Output file is in the same directory as the PHP script.
    //Uses the object's filetype attribute as the file extension.
    $outputFile = fopen($myImg->fileName . "." . $myImg->fileType, "w");
    $image = base64_decode($myImg->b64);
    fwrite($outputFile, $image);
    fclose($outputFile);
}

该函数创建图像文件,但在 Xubuntu 图像查看器中尝试查看它们时出现错误。错误如下:

我查看并遵循了 base64 到图像转换的指南,但其中 none 遇到了这些错误。

您可以像这样从 base64 解码图像:

function base64_to_jpeg_img($base64_img_string, $output_img) {
    $input_file_open = fopen($output_img, "wb"); 

    $data = explode(',', $base64_img_string);
    fwrite($input_file_open, base64_decode($data[1])); 
    fclose($input_file_open); 

    return $output_img; 
}

希望对您有所帮助!

尝试在浏览器中内联显示图像,如下所示:

<img src="data:image/png;base64,the-base64-string" />

(将png更改为正确的图片格式)

如果图像仍然损坏,则图像数据无效。