我有一個資料庫,其中包含另存為BLOBs 的影像。我可以像這樣在頁面上成功使用影像:
<img src="<?php echo 'data:image/jpeg;base64,'.base64_encode($image)?>" alt="Landing" width="150px">
然而,這需要在實際陳述句中手動設定檔案擴展名data:image/jpeg;。問題是我有很多不同格式的影像。我想確保根據每個影像的特定檔案的實際檔案擴展名正確設定檔案型別。我已經有一個嵌套陣列,其中包含這些檔案的所有檔案擴展名。
盡管如此,我在動態設定擴展時遇到了麻煩。我嘗試簡單地將''單引號替換為"",以便我可以輕松地在陳述句中使用變數,如下所示:
<img src="<?php echo "data:image/$images['monitor']['extension'];base64,".base64_encode($image)?>" alt="Landing" width="150px">
這不起作用,因為src我相信標簽本身包含雙引號。我的 IDE 告訴我一個錯誤Cannot use '[]' for reading。我也試過使用連接的單引號代替:
<img src="<?php echo 'data:image/' . $images['monitor']['extension'] . ';base64,'.base64_encode($image)?>" alt="Monitor" width="150px">
這也不起作用。我自己無法在網上找到任何解決方案。有沒有辦法動態設定檔案擴展名?盡管jpeg對每個影像的設定大多有效,例如對image/x-ico選項卡圖示進行設定會使影像無法正確加載。
uj5u.com熱心網友回復:
假設 BLOB 包含影像的實際二進制資料。
只需確保擴展名與所需的語法匹配
jpg 檔案:<img src="data:image/jpeg;base64,[base64_encoded_data]
png 檔案:<img src="data:image/png;base64,[base64_encoded_data]
ico 檔案:<img src="data:image/icon;base64,[base64_encoded_data]
因此,示例示例如下所示:
<?php
$image=file_get_contents("http://www.createchhk.com/SO/sample1.png");
$file_ext = 'png';
?>
Test for PNG<br>
<img src="data:image/<?php echo $file_ext; ?>;base64,<?php echo base64_encode($image)?>" alt="Landing" width="50px"><br>
<?php
$image2=file_get_contents("http://www.createchhk.com/SO/sample1.jpg");
$file_ext2 = 'jpeg';
?>
Test for JPG<br>
<img src="data:image/<?php echo $file_ext2; ?>;base64,<?php echo base64_encode($image2)?>" alt="Landing2" width="50px"><br>
<?php
$image3=file_get_contents("http://www.createchhk.com/SO/sample1.ico");
$file_ext3 = 'icon';
?>
Test for JPG<br>
<img src="data:image/<?php echo $file_ext3; ?>;base64,<?php echo base64_encode($image3)?>" alt="Landing3" width="50px"><br>
結果可以在這里看到:
http://www.createchhk.com/SO/testSO_18Nov2021.php
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/362748.html
下一篇:PIL的問題
