Base64 形式の画像を表示する必要があります。PHP で img タグを作成すると、画像が表示されません (デフォルトの「壊れた画像」アイコンのみ)。ページ ソースを表示して Base64 データをクリックすると、期待どおりの画像が表示されます。また、ページ ソースをコピーして貼り付け、HTML ファイルとして保存すると、期待どおりに表示されます。ランダムな画像も試してみましたが、うまくいきましたが、私の画像は .html ファイルから動作するので、問題ないと思います。
.php コード:
header('content-type: text/html');
...
echo "<html><head></head><body>";
echo "Name = $name<br/>";
echo "<img src=\"data:image/jpg;base64,$photo\"/>";
echo "</body></html>";
View Source からの HTML:
<html>
<head></head>
<body>Name = Andrea Pilipczuk<br/>
<img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAyADIAA...{too big to fit here].../9k="/>
</body>
</html>
編集:
これはView Sourceでは出てきませんでしたが、Chromeを掘り下げて画像要素を調べたところ、最後に「9k=�������」が見つかりました。これはある種のパディングですか?要素を編集してこれらを削除すると、画像が期待どおりに表示されました。
次のコードは、ランダムな文字を削除し、画像を正しく表示しますが、少しハッキリしているように見えます。明らかに根本的な問題を解決することを好みます。
$unpadded = explode("=", $photo);
$padding = strlen($unpadded[0]) % 3;
$padded = $unpadded[0];
while ($padding > 0) {
$padded .= "=";
$padding--;
}
echo "<img src=\"data:image/jpeg;base64,$padded\"/>";