美文网首页Web 前端开发
图片优化之Base64解决方案

图片优化之Base64解决方案

作者: 捷搜索 | 来源:发表于2018-09-14 09:18 被阅读101次

    本文来自于自家博客站 捷搜索 ,其中内容部分来源于 斗捷网络

    今天给大家讲述图片优化之Base64图片的使用,对网站优化有过思考和行动的人都知道,图片优化占比实属重中之重。之前也介绍过WebP格式图片的优势及使用,Webp图在保证质量的情况下能把体积压缩到最小,比PNG、JPG等其他格式图压缩后的图片体积都要小,但是有一点,之前也提到过,体积比较小的图片(10K以下的样子)转化成Webp反而体积变大了,这样的图片就没必要转化成Webp了,那么这些小图就可以使用我们今天的主角Base64了。

    而图片的 base64 编码可能相对一些人而言比较陌生,Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。当然这样的介绍我们并不懂,在本文主要让你知道什么是图片的 base64 编码,为什么我们要用它,我们如何使用并且方便的使用它。

    优点

    1.减少请求

    一般的图片,每一个图片都要向服务器请求一次,而Base64是随着 HTML 的下载同时下载到本地,那就意味着无论有多少张图片都不用向服务器再次请求,那么就给服务器减少了一定的压力,页面的加载速度也会相对变快。

    2.不用储存

    图片生成Base64后,Base64码就代表这张图片,同时也不会依赖于这张图片,这张删除了也无所谓,直接就使用这个Base64码就可以了,图片也不用存储到服务器上,有没有这张图片对网站没有什么影响了,那么给服务器也能省却一定的存储空间。

    3.积少成多

    虽然是一张小小的图片,不会给性能带来多大的变化,但是如果网站里有好多这样的图片呢,那么无疑给网站性能带来很大的优化。嗖嗖的!

    生成Base64方法

    1.php生成方案

    <?php
    $image_file = './msg.png';
    $image_info = getimagesize($image_file);
    $image_data = fread(fopen($image_file, 'r'), filesize($image_file));
    $base64_image = 'data:' . $image_info['mime'] . ';base64,' . chunk_split(base64_encode($image_data));
    echo $base64_image;
    ?>
    

    2.js生成方案

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>图片转成base64码</title>
    </head>
    <body>
    <input accept="image/*" name="img" id="ImgFile" type="file">
    <textarea id="ImgBase64" name="img_base64" style=" width:820px"></textarea>
    <script type="text/javascript">
        document.getElementById("ImgFile").onchange = function () {
            var file = this.files[0];
            r = new FileReader();  //本地预览
            r.onload = function(){
                document.getElementById('ImgBase64').value = r.result;
            }
            r.readAsDataURL(file);    //Base64
        }
    </script>
    </body>
    </html>
    

    相关文章

      网友评论

        本文标题:图片优化之Base64解决方案

        本文链接:https://www.haomeiwen.com/subject/fwvvgftx.html