PHP-无法将Base64字符串保存到图像文件

时间:2015-07-09 10:40:24

标签: php image file-io base64

我必须在我的本地驱动器上保存base64文件,但是当我使用file_put_contents时图像已损坏。

我可以使用以下标记在浏览器中查看图像,但是当我使用file_put_contents时它不起作用。

$data = '<img src="data:image/png;base64,'.$image.'"/>';

代码:

$data = '<img src="data:image/png;base64,'.$image.'"/>';
 //$data = str_replace(' ','+',$data);
  $decoded=base64_decode($image);

file_put_contents('/opt/lampp/htdocs/image.png',$decoded);

这是我的编码图像内容: http://pastebin.com/PtzmceJe

3 个答案:

答案 0 :(得分:1)

继续粘贴在此处的base64字符串:http://pastebin.com/PtzmceJe图片是GIF。文件名有时很重要,具体取决于图像查看器或操作系统..

将您的代码更改为此...

$decoded = base64_decode($image);
file_put_contents('/opt/lampp/htdocs/image.gif',$decoded);

..它应该适合你。

您可以在此处看到转换后的输出http://imgur.com/sWiwYaX作为GIF。

答案 1 :(得分:0)

您必须删除图片代码并仅使用代码的src。字符串应如下所示:

  

数据:图像/ GIF; base64,2CiVBORw0KGgoAAAANSUhE

保存base64编码图像

    <?php
    //explode at ',' - the last part should be the encoded image now
    $exp = explode(',', $data);
    //we just get the last element with array_pop
    $base64 = array_pop($exp);
    //decode the image and finally save it
    $data = base64_decode($base64);
    //take care of your file extension
    $file = 'image.gif';
    //make sure you are the owner and have the rights to write content
    file_put_contents($file, $data);

或直接使用您拥有的$image变量。

    <?php
    //decode the image and finally save it
    $data = base64_decode($image);
    $file = 'data.png';
    //make sure you are the owner and have the rights to write content
    file_put_contents($file, $data);

答案 2 :(得分:0)

好像你的布线错误:

$data = '<img src="data:image/png;base64,'.$image.'"/>';
//$decoded=base64_decode($data); wrong $data
$decoded=base64_decode($image); //corrent


file_put_contents('/opt/lampp/htdocs/image.png',$decoded);

或者可能是写权限问题或路径问题,请尝试:

file_put_contents('image.png',$decoded);// if dir having write permission it should work then try with complete path