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