如何将字节数组转换为图像并使用PHP将其保存在文件夹中?

时间:2018-01-10 10:47:14

标签: php codeigniter-3

我正在使用以下代码

这里$ data是一个字节数组。

$decoded_data = base64_decode($data);
$im = imagecreatefromstring($decoded_data);

if ($im !== false) {
   header('Content-Type: image/png');
   $image_nam = "png_".time().".png";
    imagepng($im, $image_nam);
    imagedestroy($im);
}

但我没有得到确切的输出

2 个答案:

答案 0 :(得分:0)

尝试使用这个简单的代码将图像保存到目录

file_put_contents('/myfolder/imageName.jpg', base64_decode($img));

你也可以试试这个

$base_to_php = explode(',', $base64Img);
$data = base64_decode($base_to_php[1]);
$filepath = "/path/imageName.png"; // or image.jpg
file_put_contents($filepath,$data);

答案 1 :(得分:0)

我建议你参考link -

这可能是base64字符串中存在元数据的问题。

根据消息来源,问题可能是由于数据:image / png; base64,包含在二进制字符串中。

二进制字符串中存在的元数据在解码后会导致无效的图像数据。您可以通过在解码字符串之前删除函数中的元数据来尝试它。

您可以使用函数并将输出写入新文件。

$position_s= strpos($base64_string , "data:image/png;base64,");

substr($base64_string, 0, $position_s) . substr($base64_string, $position_s+ strlen("data:image/png;base64,");

注意:如果您更喜欢爆炸功能,最好设置限制:

explode(',',$base64_string,2)