当前位置:首页 > 技术 > 正文内容

PHP将图片转换成base64格式(优缺点)

醉清风2019-06-20技术5959

一、图片转换成base64格式的优缺点

1. 优点
(1)base64格式的图片是文本格式,占用内存小,转换后的大小比例大概为1/3,降低了资源服务器的消耗;
(2)网页中使用base64格式的图片时,不用再请求服务器调用图片资源,减少了服务器访问次数。
2. 缺点
(1)base64格式的文本内容较多,存储在数据库中增大了数据库服务器的压力;
(2)网页加载图片虽然不用访问服务器了,但因为base64格式的内容太多,所以加载网页的速度会降低,可能会影响用户的体验。
(3)base64无法缓存,要缓存只能缓存包含base64的文件,比如js或者css,这比直接缓存图片要差很多,而且一般HTML改动比较频繁,所以等同于得不到缓存效益。

二.php图片与base64互相转换

/* 图片转化为data/base64数据流 */
function base64EncodeImage($img_file) {
    $img_base64 = '';
    if (file_exists($img_file)) {
 
        /* 图片路径 */
        $app_img_file = $img_file;
        /* 图片大小,类型 */
        $img_info = getimagesize($app_img_file);
        /* 图片可读权限 */
        $fp = fopen($app_img_file, "r");
        if ($fp) {
 
            $filesize = filesize($app_img_file);
            $content = fread($fp, $filesize);
            /* 图片base64编码 */
            $file_content = chunk_split(base64_encode($content));
            /* 图片类型判断 */
            switch ($img_info[2]) {
 
            case 1:
                $img_type = "gif";
                break;
            case 2:
                $img_type = "jpg";
                break;
            case 3:
                $img_type = "png";
                break;
 
            }
            /* 合成图片的base64编码 */
            $img_base64 = 'data:image/'.$img_type.';base64,'.$file_content;
 
        }
        fclose($fp);
 
    }
    /* 返回图片base64编码 */
    return $img_base64;
 
}
 
/* base64转换成图片存储 */
$data = str_replace('data:image/jpg;base64,', '', $img_base64);
file_put_contents(文件路径, base64_decode($data));

三、base64图片实际应用

<img src="data:image/jpeg;base64,/9j/4AAQS……"/>


因为base64的使用缺点,所以一般图片小于10kb的时候,我们才会选择使用base64图片,比如一些表情图片,太大的图片转换成base64得不偿失。当然,极端情况极端考虑。

扫描二维码至手机访问

扫描二维码推送至手机访问。

版权声明:本文由红柚酱发布,如需转载请注明出处。

转载请注明出处:https://www.notenet.cn/post/63.html

标签: php文件上传

相关文章

「漏洞通告」Apache Struts远程代码执行漏洞 S2-059/S2-060安全漏洞 (CVE-2019-0230,CVE-2019-0233)

「漏洞通告」Apache Struts远程代码执行漏洞 S2-059/S2-060安全漏洞 (CVE-2019-0230,CVE-2019-0233)

一、综述北京时间8月13日,Struts官方发布新的安全通告,公布了2个安全漏洞:S2-059(CVE-2019-0230)是一个潜在的远程代码执行漏洞,S2-060(CVE-2019-0233)是一...

linux之间的文件互传-scp命令

linux之间的文件互传-scp命令

scp是secure copy的简写,用于在Linux下进行远程拷贝文件或目录的命令,基于ssh登陆进行安全的远程文件拷贝命令,因此其传输是加密的。scp占用资源非常少,并不会提高多少系统负荷,在这一...

linux配置java环境变量

linux配置java环境变量

java开发,配置jdk环境变量是入坑的第一步,下面来看下。1、卸载系统自带java版本java -version查看Linux是否自带装了openjdkyum -y remove java*来卸载自...

php+js实现图片的上传、裁剪、预览、提交

php+js实现图片的上传、裁剪、预览、提交

首先用到的语言是php、插件imgareaselect(下载地址:http://odyniec.net/projects/imgareaselect/),没有太多花哨的样式,代码如下:<!DOC...

ubuntu16.04安装lnmp环境

ubuntu16.04安装lnmp环境

1.安装mysqlsudo apt install mysql-server2.安装nginx和php#添加nginx和php的ppa源sudo apt-add...