PHP Data URI 轉換程式

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

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

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

PHP Data URI 轉換程式

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

  1. <?php
  2. function get_data_uri($filename)
  3. {
  4. return 'data:' . mime_content_type($filename) . ';base64,' . base64_encode(file_get_contents($filename));
  5. }
  6. ?>

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

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

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

  1. <?php
  2. if (!function_exists('mime_content_type')) {
  3. function mime_content_type($filename) {
  4. $finfo = new finfo();
  5. return $finfo->file($filename, FILEINFO_MIME_TYPE);
  6. }
  7. }
  8. ?>

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

  1. <?php
  2. function get_data_uri($filename)
  3. {
  4. if (function_exists('mime_content_type')) {
  5. $mime = mime_content_type($filename);
  6. } else {
  7. $finfo = finfo_open(FILEINFO_MIME_TYPE);
  8. $mime  = finfo_file($finfo, $filename);
  9. // $finfo = new finfo();
  10. // $mime  = $finfo->file($filename, FILEINFO_MIME_TYPE);
  11. }
  12. return 'data:' . $mime . ';base64,' . base64_encode(file_get_contents($filename));
  13. }
  14. ?>

使用方式

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

相關網頁

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

作者: Tsung

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

發表迴響

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