我有包含图像作为基本64字符串的对象,该对象还包含图像的文件名,以及图像的文件类型(jpeg,png,gif和bmp)。 基本的64个字符串已经有了标签(例如"数据:image / png; base64"从头开始删除。
对象的格式($ myImg)如下:
$ myImg-> fileName包含应保存转换后图像的名称。
$ myImg-> fileType描述了文件应该保存的格式 - 这用于指定fopen()函数中的路径扩展名。
$ myImg-> b64包含代表图像的64位二进制字符串。
我的功能代码如下:
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 Image Viewer中查看时会出现错误。错误如下:
解释JPEG图像文件时出错(不是JPEG文件:以0x14 0x00开头)
读取PNG图像文件时发生致命错误:不是PNG文件。
文件似乎不是GIF文件。
BMP图片有虚假标题数据。
我已查看并按照指南进行了base64图像转换,但没有一个遇到过这些错误。
答案 0 :(得分:1)
尝试在浏览器中内嵌显示图片,如下所示:
<img src="data:image/png;base64,the-base64-string" />
(将png
更改为正确的图片格式)
如果图像仍然损坏,则图像数据无效。
答案 1 :(得分:0)
您可以像这样解码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;
}
希望这有帮助!