2011-07-31 2 views
1

J'ai une collection de type personnalisé qui est comme suit:Affichage des images de la collection en asp.net

[DataContract] 
public class PhotoDC 
{ 
    public PhotoDC(); 

    [DataMember] 
    public byte[] ImagebyteArray { get; set; } 
    [DataMember] 
    public string Name { get; set; } 
} 

Je veux montrer tous les éléments sur un formulaire web (image et son nom), une idée qui contrôle que je peux utiliser et comment puis-je convertir un tableau d'octets en image?

Répondre

1

Il n'existe aucun contrôle intégré dans ASP.NET que vous pouvez affecter directement un tableau d'octets pour afficher des images. Ce que vous pouvez faire, c'est simplement écrire un HttpHandler personnalisé qui prend "Name" comme argument et envoie le tableau d'octets comme une réponse binaire au client avec les en-têtes de réponse http appropriés.

Here est un exemple de gestionnaire http personnalisé. Dans cet exemple, l'image est créée à partir d'un fichier en utilisant un flux de fichier.

0

Je voudrais utiliser un contrôle Repeater qui a une étiquette et des contrôles Image avec le modèle d'élément.

Les conversions suivantes vers et depuis et byteArray.

/// <summary> 
    /// Converts an Image to Byte array 
    /// </summary> 
    /// <param name="imageIn">Image to convert</param> 
    /// <returns>byte array</returns> 
    public static byte[] ImageToByteArray(Image imageIn) 
    { 
     MemoryStream ms = new MemoryStream(); 
     imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Gif); 
     return ms.ToArray(); 
    } 

    /// <summary> 
    /// Converts an Byte array to and Image 
    /// </summary> 
    /// <param name="byteArrayIn">byre array</param> 
    /// <returns>Image</returns> 
    public static Image ByteArrayToImage(byte[] byteArrayIn) 
    { 
     MemoryStream ms = new MemoryStream(byteArrayIn); 
     var returnImage = Image.FromStream(ms); 
     return returnImage; 
    } 

Ce link vous montre devez lier flux de mémoire pour le contrôle de l'image asp.net.

Questions connexes