用PHP把服务器上的图片转成base64输出到浏览器

为什么要把图片转为base64编码?
base64是当前网络上最为常见的传输8 Bit字节代码的编码方式其中之一。
base64除了可以用来加密,它还可以把某些二进制数转成普通字符用于网络传输。由于这些二进制字符在传输协议中属于控制字符,不能直接传送,所以需要转换一下。虽然图片可能直接传输,但是我们也可以将它变成字符串直接放在源码里,而不需要浏览器在读取到源码后再从服务器上下载。还有比如截图插件,也会经常转成base64,避免需要先上传到服务器再截图,而是本地就可以先完成,确定截图区域后生成base64代码预览,提交后再保存。就避免了服务器图片垃圾。
早期做网站,如果想把图片保存到数据库,需要转成二进制blob存储。现在也可以转成base64,而且效率更高。

-我通过格式转换工具来查看到源码

用PHP把服务器上的图片转成base64输出到浏览器_第1张图片
图片.png

-我的 base64是下图内容

图片.png

所以,我们如果想要在php中输出base64图片,直接这样即可echo '![](.$wxPaySmUrl.)';

/** 把图片转成base64 :如      $img=imgtobase64('images/logo2.png');
 * http://www.vephp.com 维易PHP
 * @param string $img  图片物理地址
 * @param bool $imgHtmlCode  是否转成HTML代码,即:![](...) 默认转化
 * @return string
 */
function imgtobase64($img='', $imgHtmlCode=true)
{
       $imageInfo = getimagesize($img);
       $base64 = "" . chunk_split(base64_encode(file_get_contents($img)));
       # file_get_contents可替换为 fread(fopen($img, 'r'), filesize($img));
       return $imgHtmlCode? '![]('.$base64.')' : $base64;
}

另外,如果要反向操作也很简单,就是把取到的base64,用base64_decode()函数解码,再用file_put_contents()函数保存成图片即可。可以参考http://www.vephp.com/jiaocheng/54.html summernote在线编辑器提交的内容PHP处理其中图片函数中的处理。

你可能感兴趣的:(用PHP把服务器上的图片转成base64输出到浏览器)