https://blog.csdn.net/qq_18979049/article/details/78610502
Data URI scheme是在RFC2397中定义的,目的是将一些小的数据,直接嵌入到网页中,从而不用再从外部文件载入。比如上面那串字符,其实是一张小图片,将这些字符复制黏贴到火狐的地址栏中并转到,就能看到它了,一张1X36的白灰png图片。
在上面的Data URI中,data表示取得数据的协定名称,image/png 是数据类型名称,base64 是数据的编码方法,逗号后面就是这个image/png文件base64编码后的数据。
目前,Data URI scheme支持的类型有:
1
2
3
4
5
6
7
8
9
10
11
12
| data:,文本数据
data:text/plain,文本数据
data:text/html,HTML代码
data:text/html;base64,base64编码的HTML代码
data:text/css,CSS代码
data:text/css;base64,base64编码的CSS代码
data:text/javascript,Javascript代码
data:text/javascript;base64,base64编码的Javascript代码
data:image/gif;base64,base64编码的gif图片数据
data:image/png;base64,base64编码的png图片数据
data:image/jpeg;base64,base64编码的jpeg图片数据
data:image/x-icon;base64,base64编码的icon图片数据
|
https://www.wubin.work/blog/articles/357
image对象转换base64
在使用php合成图片的时候,遇到了这么一个问题。
1
2
3
4
| $img = imagecreatetruecolor($graphWidth,$graphHeight);
.....
header("Content-type: image/png");
imagepng($img);
|
最终我要求的是将生成的图片对象,输出为Base64然后传送给前端,让前端接收。
解决:
之所以不起作用,是因为其中的图像$img是资源,而不是实际的PNG图像。当您调用时imagepng(),它将输出图像。我要做的是创建一个输出缓冲区,并对其进行base-64编码。
1
2
3
4
5
| ob_start();
imagepng($img);
$buffer = ob_get_clean();
ob_end_clean();
echo base64_encode($buffer);
|
最后,要忘记更改Content-Type标题,因为它不再是image/png。
最终转换为base64可以访问的格式是:
1
2
3
4
5
6
7
8
9
| // 创建缓冲区
ob_start();
imagepng($img);
$buffer = ob_get_clean();
ob_end_clean();
$base64 = base64_encode($buffer);
$imageData = 'data:'. "image/png" . ';base64,' . $base64;
echo $imageData;
|
注意,一个有效的base64格式为:
1
| data:image/png;base64, ...........
|
可以使用这个工具查看:http://tool.wubin.com/img2base64
图片转换为base64
php转换本地图片为base64
1
2
3
4
5
6
7
8
9
10
| $filename = 'xxxx'; //本地图片在服务器上的路径
$imageDetails = getimagesize($filename);
if ($fp = fopen($filename,"rb", 0)) {
$picture = fread($fp,filesize($filename));
fclose($fp);
$base64 = chunk_split(base64_encode($picture));
$imageData = 'data:'.$imageDetails['mime'].';base64,' . $base64;
//输出base64图片代码...
echo $imageData;
}
|
php将远程图片转为base64的方法
1
2
3
4
5
6
| $img_url = ''; //远程图片地址
$imageInfo = getimagesize($img_url);
$content = @file_get_contents($img_url);
$base64Data = 'data:'.$imageInfo['mime'].';base64,'.base64_encode($content);
//输出base64图片数据流
echo $base64Data;
|