1

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\"/>";
4

0 に答える 0