1. 程式人生 > >圖片優化之Base64解決方案

圖片優化之Base64解決方案

本文來自於自家部落格站 捷搜尋  ,其中內容部分來源於  鬥捷網路   。

今天給大家講述圖片優化之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>