首页 技术正文

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

gaosc 技术 2019-06-20 5014 0 php文件上传

一、图片转换成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得不偿失。当然,极端情况极端考虑。

打赏 支付宝打赏 微信打赏
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

Music