web-dev-qa-db-ja.com

mysqlデータベースのBLOBイメージを表示するには、PHPページが必要です

したがって、最後の質問は、検索からtechIDを表示する方法についてでした。

techIDを介してリンクされているサーバーの2つの別個の部分を参照するために「詳細」ページを表示しようとしています

私の新しい質問はまだこのページにあります。エコー画像も追加しました。 Blobの使用に問題があり、バイナリJPEGデータではなく画像を表示しています。私はこれの別のインスタンスを見つけようとしましたが、私のエラーを修正するものを見つけることができません。

//Header ('Content-type: image/jpeg')
echo "<dt><strong>Technician Image:</strong></dt><dd>" . '<img src='.$row2['image'].' width="290" height="290">' . "</dd>";

そして

$query_Recordset2 = "SELECT * FROM technician WHERE techID=" . $row1["techID"] ;
$Rs2 = mysql_query($query_Recordset2) or die(mysql_error());

私が最後の質問からこれまでに加えた唯一の変更点です(明らかに、私が与えられた修正が含まれていました)。

私が理解していないのは、'Content-type: image/jpeg'リンクされている画像を自分のページに認識させるには、MIMEタイプimage/jpeg

私のページで見ているのはこれです

技術者イメージ:�E��j��i`= 7f $D��o "�������b���Ckkc��R��^M�; n〜��0m)J�� R��E)JDR��E)JDR��E)JDR��E)JDR��E)JDR��E)JDSjR��)���+��N��.R、u��� �i��n9、���QX〜����{(����̮�:���2�12�� "��aV7�6���{�LP ����گ�R $ +���LMc'hM�5�o�PA����|���ګ���.8��E��ģ��Rn��1�... �{��3>�rY��X�ۜ;�Ǖ����u���z��'�vf�N ����z�Q�����k��3���O��ܨ�ۀ�?S���、N ������[{+D��;�'�$�$��iJR��)JR��)JR��)JR��)JR��)JR��)JR��)JR ��)JR��)JR��)JR��)JR��)��width = "290" height = "290">

明らかに私は中間のチャンクを削除したので、それは巨大ではありません。前面に小さな「壊れた画像」ボックスが表示されます。右クリックして「新しいウィンドウで画像を開く」を選択すると、挿入されるURLは単純にContent-type:またはURL http:// localhost/Sim5Server/Pages/%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%10JFIF%EF%BF%BD%01%02%EF%BF%BD%EF%BF%BDd%EF%BF%BDd%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BDC%EF%BF%BD

インターネットへのリンクではないため、そのURLにスペースを入れました。

64Kb未満の小さな画像として必要なため、通常のBLOBタイプのみを使用しました

14
DBeslan

現在のケースでは、2つの先行オプションがあります。

1つ目は、このような画像が多数ある場合はお勧めしませんが、インラインbase64エンコードを使用することです。これは以下で行われます:

<img src="data:image/jpeg;base64,<?php echo base64_encode($image); ?>" />

既存のコードを使用したコピー/貼り付けバージョン:

echo '<dt><strong>Technician Image:</strong></dt><dd>'
     . '<img src="data:image/jpeg;base64,' . base64_encode($row2['image']) . '" width="290" height="290">'
     . '</dd>';

2番目の方法は、データベース内の画像のIDをクエリ文字列パラメーターとして受け取り、画像を出力する「画像」PHPファイルを作成することです。したがって、HTMLは次のようになります。 :

<img src="image.php?id=<?php echo $image_id; ?>" />

また、PHPページは次のようになります。

<?php
$id = (isset($_GET['id']) && is_numeric($_GET['id'])) ? intval($_GET['id']) : 0;
$image = getImageFromDatabase($id); // your code to fetch the image

header('Content-Type: image/jpeg');
echo $image;
?>
39
newfurniturey

ドキュメントと同じページから画像を出力できる唯一の方法は、 data uri を使用することです。

echo "<dt><strong>Technician Image:</strong></dt><dd>" . 
     '<img src="data:image/jpeg;base64,'.
      base64_encode($row2['image']).
      '" width="290" height="290">' . "</dd>";
2
Musa

適切なコードは次のようになります。リソースIDを文字列に変更するには、stream_get_contents()を使用する必要があります。

<img src="data:image/jpeg;base64,<?php echo base64_encode(stream_get_contents($row2['image'])); ?>" />
2
user2624107