base64字符串转换成图片文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了base64字符串转换成图片文件相关的知识,希望对你有一定的参考价值。

用canvas的toDataURL得出一个base64的字符串 想把canvas里的图片上传到服务器,保存成图片格式,请问该怎么做?服务端用php

需要在php端处理base64字符串里的头部信息

贴一段我正在用的


php($stream是你传上来的base64

       //获取扩展名和文件名
        if (preg_match('/(?<=\\/)[^\\/]+(?=\\;)/',$stream,$pregR)) $streamFileType ='.' .$pregR[0];  //读取扩展名,如果你的程序仅限于画板上来的,那一定是png,这句可以直接streamFileType 赋值png
        $streamFileRand = date('YmdHis').rand(1000,9999);    //产生一个随机文件名(因为你base64上来肯定没有文件名,这里你可以自己设置一个也行)

        $streamFilename = $upPath."/".$streamFileRand .$streamFileType;

        //处理base64文本,用正则把第一个base64,之前的部分砍掉
        preg_match('/(?<=base64,)[\\S|\\s]+/',$stream,$streamForW);
        if (file_put_contents($streamFilename,base64_decode($streamForW[0]))===false) Common::exitWithError("文件写入失败!","");//这是我自己的一个静态类,输出错误信息的,你可以换成你的程序

字符串,假设随机命名,如果你不要随机命名,可以改streamFileRand 的值,$upPath是你上传路径):

参考技术A // 从网上复制过来的,试试吧
// 要砍掉前面的data:image/png;base64,(如果有的话)
function base64_to_jpeg( $base64_string, $output_file ) 
    $ifp = fopen( $output_file, "wb" ); 
    fwrite( $ifp, base64_decode( $base64_string) ); 
    fclose( $ifp ); 
    return( $output_file ); 


$image = base64_to_jpeg( $my_base64_string, 'tmp.jpg' );

追问

额 不行呢 出来的tmp.jpg根本就看不了 求解

C# Base64字符串转换成图片及图片转换为Base64

最近有朋友经常会问我一些问题,例如,如何把一个字符串转换成base64字符串,如何把一个二进制文件转换成Base64文件,以及如何转换回原有的文件,在此我把方法写一下

 
字符串与Base64相互转换
编码:
byte[] bytes = Encoding.Default.GetBytes("要转换的字符");
string str = Convert.ToBase64String(bytes);
解 码:
byte[] outputb = Convert.FromBase64String(str);
string orgStr = Encoding.Default.GetString(outputb);
 
 
文件与Base64相互转换
var byteArray=File.ReadAllBytes(@"c:\demo.GIF");
string base64string = Convert.ToBase64String(byteArray);
 
Base64字符串解码:
byte[] bt = Convert.FromBase64String(base64string);
File.WriteAllBytes("c:\abc.gif", bt);
 
JS将Canvas内容转换成Base64
var imgCanvas = document.getElementByIdx_x("imgCanvas");
//直接将canvas内容转换为base64字符串
var data = imgCanvas.toDataURL("image/jpeg", 1);
//服务器端接收的Base64一般要把前面7个字符去除掉,否则FromBase64String会认为不是正确的Base64字符串
data = data.substr(data.indexOf(‘base64,‘) + 7);
console.log(data)

 

以上是关于base64字符串转换成图片文件的主要内容,如果未能解决你的问题,请参考以下文章

js如何将选中图片文件转换成Base64字符串?

转换图片为base64

base64的byte[]如何转换成图片

如何将base64位的字节数组转换成图片并显示

前端将图片转换为base64位,使用ajax传递到后台,但是图片经过base64转换成字符串后非常长,无法使用ajax

图片与Base64的转换