Maison  >  Article  >  base de données  >  Comment afficher une image stockée sous forme de BLOB dans MySQL dans une PictureBox ?

Comment afficher une image stockée sous forme de BLOB dans MySQL dans une PictureBox ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-28 17:55:02464parcourir

How to Display an Image Stored as a BLOB in MySQL in a PictureBox?

Comment récupérer une image depuis MySQL et l'afficher dans une PictureBox

Problème :

Récupération d'images stockées sous forme de BLOB dans une base de données MySQL et les afficher dans une PictureBox ne fonctionne pas correctement.

Solution :

Le problème dans le code fourni réside dans la récupération incorrecte de l'image de la base de données. Les étapes suivantes décrivent une méthode pour récupérer et afficher des images à partir d'une base de données MySQL :

  1. Configuration de la base de données :

    • Créer une table dans la base de données MySQL avec une colonne pour stocker les données d'image sous forme de type BLOB.
  2. Afficher l'image dans PictureBox :

    • Dans la méthode byteArrayToImage, convertissez le tableau d'octets (ImageByte) en un objet Image :

      public Image byteArrayToImage(byte[] byteArrayIn)
      {
          using (var ms = new MemoryStream(byteArrayIn))
          {
              return Image.FromStream(ms);
          }
      }
    • Dans la méthode photoLoad, récupérez l'image à l'aide d'une requête paramétrée :

      private void photoLoad()
      {
          // ...
          using (var con = new MySqlConnection(connectionString))
          {
              byte[] ImageByte = new byte[0];
              string query1 = "select image from reg.img_table where id= @id";
              using (var cmd = new MySqlCommand(query1, con))
              {
                  cmd.Parameters.AddWithValue("@id", Properties.Settings.Default.idImg);
                  
                  con.Open();
                  using (var row = cmd.ExecuteReader())
                  {
                      while (row.Read())
                      {
                          ImageByte = (byte[])(row["image"]);
                      }
                  }
              }
      
              if (ImageByte != null)
              {
                  // Convert to an Image object and display in PictureBox
                  roundPictureBox1.Image = byteArrayToImage(ImageByte);
                  roundPictureBox1.Refresh();
              }
          }
          // ...
      }
  3. Considérations supplémentaires :

    • Assurez-vous que l'image est correctement enregistrée dans la base de données ( par exemple, en utilisant File.ReadAllBytes pour lire le fichier image).
    • Vérifiez si le tableau d'octets récupéré (ImageByte) n'est pas vide avant d'essayer de le convertir en objet Image.
    • Gérez les exceptions de manière appropriée dans la méthode photoLoad pour la gestion des erreurs.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn