簡體   English   中英

如何動態設置數據:圖像/文件類型?

[英]How do I set data:image/ filetype dynamically?

我有一個數據庫,其中包含保存為BLOB的圖像。 我可以像這樣在頁面上成功使用圖像:

<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選項卡圖標這樣做會導致圖像無法正確加載。

假設 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM