最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

php數據庫中將base64圖片數據轉化為可訪問src的方法詳解

 更新時間:2023年10月27日 09:09:08   作者:小柳666  
后端同學在對一些老項目進行二次開發(fā)時候,可能會遇到一些小的圖片以base64的方式存儲在數據庫中的情況,這樣做的好處是這些圖片數據一般不會因為項目重新部署而丟失,但是這么做也會存在一些壞處,本文給大家介紹了php數據庫中base64圖片數據轉化可訪問的src的方法

情形再現

下面是一張工程機械的品牌表

這個表的logo就是存儲的base64的圖片。

當我們在對品牌列表進行查詢的時候,因為logoBase這個字段存儲的base64格式的圖片,大小基本在5kb左右。當我們一下子拉取1000條數據的時候,那么整個列表接口的數據量就在 5000kb的大小。這就會導致當用戶需要選擇品牌的時候,這個接口的響應速度需要4s,嚴重影響到了用戶的使用體驗。

問題分析

既然接口數據這么大,每次查詢數據庫都需要耗費時間。首先想到的就是把這些數據放置到redis緩存之中,這樣每次取緩存數據就不會這么慢了。但是,品牌列表是跟分類多對多的一種關系,存在篩選。緩存中沒法存儲這所有篩選情況的組合。

那么就只能在列表中剔除掉這個耗時的字段,然后從圖片接口中單獨取這張圖片的數據了。但是,這樣就導致了當前端拿取到列表時候,需要重新循環(huán)從接口拉取圖片數據。1000條數據就會循環(huán)1000次去圖片接口中拉取數據。循環(huán)接口拿數據,這是非常的耗費資源的一種情況。

于是,我想到的是,直接用接口給前端返回一個資源文件,前端可以把配置的url直接扔到圖片的src中,這就實現了圖片的預覽功能。

具體實現

  • 品牌列表中,直接干掉logoBase字段。這樣接口速度就非??炝?。
  • 編寫圖片src的接口

默認接口返回的 Content-Type為application/json; charset=utf-8,此時瀏覽器就會以json的方式解析返回的內容。我們既然要返回png,那么Content-Type就要設置為image/png。

header('Content-type:image/png');

剩下的就是怎么將base64的內容解析成png圖片的內容了。

           $image = imagepng(imagecreatefromstring(base64_decode(explode(',',$ret)[1])));
            header('Content-type:image/png');
            echo $image;
            exit;

解析我們用到了php GD庫提供的一些方法。當得到了圖片的str內容時候,通過imagepng()方法將得到的內容轉成二進制進行輸出。這樣就可以達到訪問一個 url返回一張可以預覽的圖片效果了。

不足之處歡迎提供寶貴意見。

到此這篇關于php數據庫中將base64圖片數據轉化可訪問src的方法詳解的文章就介紹到這了,更多相關php將base64圖片轉化src內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

商都县| 贺兰县| 济阳县| 高尔夫| 新乡县| 武城县| 勐海县| 彭山县| 柘荣县| 墨脱县| 无棣县| 绥阳县| 尤溪县| 上思县| 剑河县| 朔州市| 容城县| 揭东县| 九龙坡区| 茌平县| 左贡县| 秀山| 清流县| 延吉市| 安化县| 修水县| 浦东新区| 东阿县| 沙雅县| 九龙县| 鹤峰县| 崇义县| 广灵县| 台江县| 原平市| 萨嘎县| 泰安市| 西贡区| 紫金县| 夏河县| 沁阳市|