如何将图像从 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) 的格式如下:
$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 图像查看器中尝试查看它们时出现错误。错误如下:
解释 JPEG 图像文件时出错(不是 JPEG 文件:以 0x14 0x00 开头)
读取 PNG 图像文件时出现致命错误:不是 PNG 文件。
文件似乎不是 GIF 文件。
BMP 图像有伪造的 header 数据。
我查看并遵循了 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
更改为正确的图片格式)
如果图像仍然损坏,则图像数据无效。
我有 objects 包含图像作为 base 64 字符串,object 还包含图像的文件名和图像的文件类型(jpeg、png、gif 和 bmp)。 Base 64 字符串已经有标签(例如 "data:image/png;base64" 从开头删除。
objects ($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 图像查看器中尝试查看它们时出现错误。错误如下:
解释 JPEG 图像文件时出错(不是 JPEG 文件:以 0x14 0x00 开头)
读取 PNG 图像文件时出现致命错误:不是 PNG 文件。
文件似乎不是 GIF 文件。
BMP 图像有伪造的 header 数据。
我查看并遵循了 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
更改为正确的图片格式)
如果图像仍然损坏,则图像数据无效。