2011-12-06 14 views
3

Je tente désespérément de sauvegarder une image dans une base de données SQL, puis de la charger sur mon WP. Tous les guides en ligne disent de convertir l'image en tableau d'octets, de la stocker, puis de la charger dans une image.Comment stocker des images dans une base de données SQL sur WP7

Jusqu'à présent, je suis en mesure d'enregistrer l'image dans un tableau d'octets en utilisant:

public static byte[] ConvertToBytes(Stream photoStream) 
    { 
     byte[] a = new Byte[photoStream.Length]; 
     for (int i = 0; i < photoStream.Length; i++) 
     { 
      a[i] = (Byte)photoStream.ReadByte(); 
     } 
     return (a); 
    } 

Cela génère un tableau d'octets qui est similaire en taille à l'image que je suis sauver.

La manière suggérée pour charger des images est:

1 public static BitmapImage ConvertToImage(Byte[] inputBytes) 
    2 { 
    3  MemoryStream stream = new MemoryStream(inputBytes); 
    4  BitmapImage image = new BitmapImage(); 
    5  image.SetSource(stream); 
    6  return (image); 
    7 } 

Cela ne fonctionne pas.

Je reçois cette erreur (ligne 5): « Erreur non spécifiée »

Est-ce que quelqu'un a une idée de comment résoudre ce problème ou peut proposer une méthode alternative/code?

Je sais qu'il existe des informations en ligne - je peux vous assurer que j'ai cherché longtemps et dur pour une méthode de travail et que je n'ai rien pu faire.

Toute aide serait grandement appréciée!

+0

Veuillez montrer comment vous obtenez des octets d'entrée de la base de données. –

+0

essayer ce lien http://www.redmondpie.com/inserting-in-and-retrieving-image-from-sql-server-database-using-c/ je suis sûr que cela peut aider – MethodMan

+0

Pour les tests, je ' Je n'utilise même pas la base de données. Je convertis une image en octets, puis envoie ces octets dans ConvertToImage. Je regarde maintenant votre lien DJ KRAZE – Cameron

Répondre

2

j'ai réussi à résoudre ce en utilisant:

public static byte[] ConvertToBytes(String imageLocation) 
    { 
     StreamResourceInfo sri = Application.GetResourceStream(new Uri(imageLocation, UriKind.RelativeOrAbsolute)); 
     BinaryReader binary = new BinaryReader(sri.Stream); 

     byte[] imgByteArray = binary.ReadBytes((int)(sri.Stream.Length)); 

     binary.Close(); 
     binary.Dispose(); 
     return imgByteArray; 
    } 

    public static WriteableBitmap ConvertToImage(Byte[] inputBytes) 
    { 
     MemoryStream ms = new MemoryStream(inputBytes); 
     WriteableBitmap img = new WriteableBitmap(400, 400); 

     img.LoadJpeg(ms); 

     return (img); 
    } 

Merci pour votre aide les gars.

-1

i utilisé ce code

byte[] Arr = Convert.FromBase64String(Im); >> i think you need that steep 
Stream memStream = new MemoryStream(Arr); 

            WriteableBitmap wbimg = PictureDecoder.DecodeJpeg(memStream); 

            image2.Source = wbimg; 
            image2.Tag = IlbumID; 

si ce travail nat

essayer

memStream.Read (Arr ,0, Arr.Length); 
+0

im est une valeur de base de données SQL – raed

+0

Merci, mais j'ai "COMException was unhandled" ... "Erreur non spécifiée". "memStream.Read (Arr, 0, Arr.Length);" retourne un entier? – Cameron

Questions connexes