如何使用PHP從MySQL數據庫讀取圖像?如何使用PHP從MySQL數據庫讀取圖像?
如果圖像存儲在一個BLOB在數據庫中,如何使用,我得到的二進制數據和 <img>
或使用CSS屬性background-image
把它變成使用src
的形象呢?
謝謝。
如何使用PHP從MySQL數據庫讀取圖像?如何使用PHP從MySQL數據庫讀取圖像?
如果圖像存儲在一個BLOB在數據庫中,如何使用,我得到的二進制數據和 <img>
或使用CSS屬性background-image
把它變成使用src
的形象呢?
謝謝。
要直接使用二進制數據作爲圖像源,則可以使用data URI scheme,例如:
$uri = 'data:image/png;base64,'.base64_encode($row['binary-data']);
這個URI然後可以直接用作圖像的源:
background-image: url(<?php echo $uri; ?>)
<img src="<?php echo $uri; ?>">
但這有一些實質性的缺點:除了這些數據缺少支持舊版瀏覽器中的URI,data URIs do also have disadvantaged regarding payload, caching, and references。
如果將圖像存儲爲BLOB,您應該怎麼做才能提供一個URL,以便可以確定要返回的圖像的方式調用腳本。
使用該URL作爲src
或background-image: url(...)
,並在腳本中將BLOB從數據庫讀取到變量中。
然後輸出經過適當的頭信息中的變量,告訴瀏覽器是爲接收圖像,例如:
header('Content-Type: image/jpeg');
發送Content-Length
報頭和關於緩存敏感信息/終止也將是明智的。
NB。說了這麼多,我傾向於在數據庫中使用BLOB,但往往會削弱性能。當我想存儲圖像時,我將其存儲在某個目錄結構中,並以某種方式在數據庫中引用它們。
非常感謝,我得到了的概念,但仍然缺少我從src調用的腳本中會發生的事情。 – eomeroff 2011-01-22 22:01:43
認真考慮將圖像作爲BLOB移出數據庫,並將它們本地存儲在文件系統中。如果多臺機器需要訪問相同的映像,請考慮跨計算機掛載的共享資源。 – 2011-01-23 02:19:08
好的謝謝了很多------------------------------------- – eomeroff 2011-01-23 11:55:19