PHP Data URI 轉換程式

於 HTML 使用 Data URI 的主要好處, 就是網頁不需要另外發 Request 去要檔案, 而且 Gzip 壓縮打開, 據說壓縮效率也會優於圖片壓縮比率.

註: 有優點當然會有缺點, 但是在此就不詳述了, 相關網頁有清楚說明的網頁, 請在自行觀看.

不過, 這些都不是重點, 重點在於需要時就會要用, 不需要用的話, 優點再多也沒用~ 😛

PHP Data URI 轉換程式

照理說 Data URI 在 PHP 只要一行就可以搞定, 如下:

<?php
function get_data_uri($filename)
{
    return 'data:' . mime_content_type($filename) . ';base64,' . base64_encode(file_get_contents($filename));
}
?>

但是 mime_content_type() 居然出現 deprecated 的字樣, 於是來改寫一下 Function 以防未來使用.

註: 官方建議 mime_content_type() 可以使用  Fileinfo 來取代.

若原始 Function 不想動, 可以用下述方式解決.

<?php
if (!function_exists('mime_content_type')) {
    function mime_content_type($filename) {
        $finfo = new finfo();
        return $finfo->file($filename, FILEINFO_MIME_TYPE);
    }
}
?>

重新撰寫 get_data_uri() Function 如下述:

<?php
function get_data_uri($filename)
{
    if (function_exists('mime_content_type')) {
        $mime = mime_content_type($filename);
    } else {
        $finfo = finfo_open(FILEINFO_MIME_TYPE);
        $mime  = finfo_file($finfo, $filename);
        // $finfo = new finfo();
        // $mime  = $finfo->file($filename, FILEINFO_MIME_TYPE);
    }
    return 'data:' . $mime . ';base64,' . base64_encode(file_get_contents($filename));
}
?>

使用方式

<img src="<?php echo get_data_uri($filename); ?>">

相關網頁

  • 淺嚐Data URI - 關於 Data URI 的優缺點分析, 此篇有清楚的說明

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料