web-dev-qa-db-fra.com

asp.net affiche l'image du tableau d'octets

J'ai un tableau d'octets et j'essaie d'afficher une image à partir de cela.

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.Linq;

namespace RealPortableTerminal
{
public partial class resim : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        PortableTerminalDbEntities entity = new PortableTerminalDbEntities();
        byte[] arr = (from b in entity.Sicil where b.Id == 31 select b.Fotograf).First();

        Image rImage = null;
        using (MemoryStream ms = new MemoryStream(arr))
        {
            rImage = Image.FromStream(ms);
        }
    }
}
}

Il souligne FromStream et indique que "System.Web.UI.WebControls.Image" ne contient pas de définition pour "FromStream". Il semble que l'ajout de la référence System.Data.Linq n'a rien changé. Est-ce que je manque quelque chose? Btw je suis assez sûr que je prends correctement tableau d'octets de la base de données.

6
Koray Durudogan

Une autre façon de le faire consiste à convertir votre tableau d'octets en chaîne de base 64 et à l'affecter à la propriété ImageUrl de rImage, comme suit:

rImage.ImageUrl = "data:image;base64," + Convert.ToBase64String(arr);

Vous n'avez pas besoin de la variable MemoryStream ou d'une page séparée ... Si le tableau d'octets est dans un format d'image pris en charge par le navigateur, il s'affichera. Bonne chance.

18
John Riehl
<img id="img" runat="server" alt=""/>

Dans le code derrière

string base64String = Convert.ToBase64String(arr, 0, arr.Length);
img.Src = "data:image/jpg;base64," + base64String;

Vous n’auriez pas besoin de MemoryStream

6
Sami

Vous pensez probablement à System.Drawing.Image; cette classe prend en charge FromStream.

Ce message de forum vous montre quelques façons de charger des images dynamiques dans WebForms.

La méthode la plus simple consiste probablement à créer une page aspx distincte qui charge votre image comme vous le faites ici et à utiliser Response.BinaryWrite pour l'enregistrer dans le flux de réponse. Dans la page sur laquelle vous travaillez, créez un contrôle Image qui utilise le nouvelle page aspx en tant qu'URL de l'image. Vous pouvez bien sûr utiliser des paramètres de chaîne de requête si vous devez charger diverses images.

1
ekolis