web-dev-qa-db-fra.com

J'ai besoin de ma page PHP pour afficher mon image BLOB de la base de données mysql

Ma dernière question était donc de savoir comment afficher mon techID à partir d'une recherche:

J'essaie d'avoir ma page "Détails" pour référencer deux parties distinctes de mon serveur qui sont liées via techID

Ma nouvelle question est toujours sur cette page. J'ai également ajouté une image d'écho. mais j'ai du mal à utiliser Blob et à lui faire afficher mon image et non les données JPEG binaires. J'ai essayé de trouver une autre instance de cela, mais je ne trouve aucune solution à mon erreur.

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

et

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

Est-ce que les seuls changements que j'ai apportés jusqu'ici de ma dernière question (y compris évidemment le correctif qui m'a été donné qui a fonctionné).

Ce que je ne comprends pas, c'est où et comment mettre 'Content-type: image/jpeg' pour que ma page reconnaisse l'image qui est liée, c'est son TYPE MIME image/jpeg.

Voici ce que je vois sur ma page

Image du technicien: �E��j��i` = 7f $ D��o "�������b���Ckkc��R�� ^ M�; n ~ ��0 & m) 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 [�W� ����گ� 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��) �� largeur = "290" hauteur = "290">

Évidemment, j'ai supprimé un morceau du milieu donc ce n'est pas énorme. il y a une petite boîte "Image cassée" qui apparaît en face et quand je clique avec le bouton droit et que je choisis "Ouvrir l'image dans une nouvelle fenêtre" l'URL qu'elle met est simplement Content-type: ou j'obtiens une page d'accès interdit avec l'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

J'ai mis un espace dans cette URL car ce n'est pas un lien pour Internet.

Je n'ai utilisé que le type BLOB normal car j'en ai juste besoin en tant que petite image inférieure à 64 Ko

14
DBeslan

Dans votre cas actuel, vous avez deux options initiales.

La première, et celle que je ne recommande pas si vous avez de nombreuses images comme celle-ci, consiste à utiliser l'encodage en base64. Cela se fait avec:

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

Une version copier/coller, en utilisant votre code existant:

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

La deuxième méthode consiste à créer une "image" PHP qui prend l'ID de l'image dans la base de données comme paramètre de chaîne de requête et génère l'image. Ainsi, votre code HTML ressemblerait à quelque chose comme :

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

Et votre page PHP ressemblerait à quelque chose de similaire à:

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

La seule façon de produire une image à partir de la même page que le document est avec un 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

Le bon code doit être comme ci-dessous. Vous devez utiliser stream_get_contents () pour changer l'ID de ressource en chaîne.

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