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

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

醉清风2019-06-20技术6258

一、图片转换成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文件上传

相关文章

php-fpm进程数管理

php-fpm进程数管理

PHP-FPM先来了解一些名词概念:CGI是Common Gateway Interface(通用网管协议),用于让交互程序和Web服务器通信的协议。它负责处理URL的请求,启动一个进程,将客户端发送...

Prometheus–Alertmanager邮件报警配置

Prometheus–Alertmanager邮件报警配置

1、安装配置 Alertmanager$ tar xf alertmanager-0.15.2.linux-amd64.tar.gz -C /usr/...

ThinkPHP5.* URL重写

ThinkPHP5.* URL重写

可以通过URL重写隐藏应用的入口文件index.php,下面是相关服务器的配置参考:[ Apache ]httpd.conf配置文件中加载了mod_rewrite.so模块AllowOverride...

【漏洞预警】VMware vCenter任意文件读取漏洞

【漏洞预警】VMware vCenter任意文件读取漏洞

2020年10月14日,阿里云应急响应中心监测到VMware vCenter特定版本存在任意文件读取漏洞,攻击者通过构造特定的请求,可以读取服务器上任意文件。漏洞描述VMware vCenter 服务...

使用Mysqldump进行逻辑备份

使用Mysqldump进行逻辑备份

mysqldump作为重要的MySQL备份工具,功能相当强大。备份参数、恢复策略,需要仔细研究。备份数据库:备份单个数据库或单个数据库中的指定表:mysqldump [OPTIONS] databas...