Jak dynamicznie ustawić dane:zdjęcie/ typ pliku?

0

Pytanie

Mam baza danych, która zawiera obrazy zapisane jako BLOBs. Mogę z powodzeniem wykorzystać obraz na stronie, na przykład, tak :

<img src="<?php echo 'data:image/jpeg;base64,'.base64_encode($image)?>" alt="Landing" width="150px">

Jednak aby to zrobić, należy ręcznie określić rozszerzenie pliku w rzeczywistym oświadczeniu na stronie data:image/jpeg;. Problem w tym, że mam wiele różnych obrazów w różnych formatach. Chcę upewnić się, że typ pliku jest ustawiony prawidłowo, na podstawie faktycznego rozszerzenia pliku konkretnego pliku dla każdego obrazu. Już mam tablice zagnieżdżone, który zawiera wszystkie rozszerzenia plików dla tych plików.

Jednak mam problemy z dynamicznej konfiguracji rozszerzenia. Próbowałem po prostu wymienić '' pojedyncze cudzysłowy z "" żebym mógł łatwo użyć zmiennej wewnątrz operatora, np. :

<img src="<?php echo "data:image/$images['monitor']['extension'];base64,".base64_encode($image)?>" alt="Landing" width="150px">

To nie działa, bo src przypuszczam, że sam tag zawiera już cudzysłów. Moja IDE informuje mnie o błędzie Cannot use '[]' for reading. Próbowałem również użyć zamiast tego połączone w pojedynczy cudzysłów :

<img src="<?php echo 'data:image/' . $images['monitor']['extension'] . ';base64,'.base64_encode($image)?>" alt="Monitor" width="150px">

Że też się nie udało. Ja sam nie mogłem znaleźć żadnego rozwiązania tego problemu w Internecie. Czy istnieje jakiś sposób na dynamicznie zainstalować rozszerzenie pliku? Chociaż instalacja jpeg dla każdego obrazu w zasadzie działa, np. image/x-ico ikona karty nie pozwala poprawnie załadować obraz.

blob image php
2021-11-18 14:56:51
1

Najlepsza odpowiedź

1

Zakładając, że duży obiekt binarny zawiera rzeczywiste dane binarne obrazy.

Po prostu upewnij się, że dany odpowiadają danemu składni

plik jpg :

plik png :

plik ico :

Tak więc, wzorowy przykład wygląda następująco:

<?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>

Wynik można zobaczyć tutaj:

http://www.createchhk.com/SO/testSO_18Nov2021.php

2021-11-18 15:58:08

To zadziałało! Odczytałem dane:obraz/ i ;base64 w HTML zamiast echo, i obraz naprawdę działa już! Dziękuję!
541daw35d

W innych językach

Ta strona jest w innych językach

Русский
..................................................................................................................
Italiano
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................