La conversione Byte[] per il tipo di Immagine in C# per Windows Phone 7

Sto avendo un problema di conversione di una matrice di Byte in un tipo di Immagine per la visualizzazione di un’applicazione su Windows Phone 7.

Il recupero dei dati da un server, e quando faccio l’upload e il download di dati e funziona bene, ma ho difficoltà al momento della conversione in un formato di Immagine.

Qualcuno può far luce su questo problema per me?

Questo è il mio metodo per trasformare la matrice di Byte in un BitmapImage,

public BitmapImage decodeImage(byte[] array)
{
    MemoryStream ms = new MemoryStream(array, 0, array.Length);

    //Convert byte[] to Image
    ms.Write(array, 0, array.Length);

    BitmapImage bitmapImage = new BitmapImage();
    bitmapImage.SetSource(ms);

    return bitmapImage;
}    

Allora questo è il codice dove cerco di impostare il restituiti BitmapImage alla fonte per l’Immagine casella sto usando in XAML UI.

BitmapImage usrIMG = new BitmapImage();
usrIMG = getJson.decodeImage(userProfile.Photos[0].Image);
profileImage.Source = usrIMG;

So che il codice è mishmashed, e mi sto dichiarando cose che non ho bisogno di, sono stato armeggiare con esso per molto tempo e io sono completamente in perdita.

Molte Grazie

Quale formato di immagine non rappresentati nella matrice di byte? Come hai fatto a salvare, in primo luogo?
Ho capito dal PhotoChooser strumento di WP7, quindi posto direttamente in un ruscello, non sono sicuro ma penso che il suo formato è PhotoStream, che è il tipo che viene restituito quando si seleziona una foto.
Non c’è bisogno ms.Write dato che hai già fornito i dati per la costruzione del MemoryStream.

OriginaleL’autore Joshua ‘Cuppers’ Whittle | 2011-04-06

4 Replies
  1. 8

    il seguente codice funziona bene per me in un rapido test per lo scenario di utilizzare il PhotoChooserTask, e memorizzare l’immagine selezionata in una matrice di byte. Si potrebbe anche voler esaminare il codice in cui è possibile memorizzare e recuperare l’array di byte su un fianco, per assicurarsi che non si perde.

    private byte[] imageBytes;
    private void GetPhoto_Click(object sender, RoutedEventArgs e)
    {
        PhotoChooserTask photoTask = new PhotoChooserTask();
        photoTask.Completed += new EventHandler<PhotoResult>(photoTask_Completed);
        photoTask.Show();
    }
    
    void photoTask_Completed(object sender, PhotoResult e)
    {
        imageBytes = new byte[e.ChosenPhoto.Length];
        e.ChosenPhoto.Read(imageBytes, 0, imageBytes.Length);
    
        //save 'imageBytes' byte array to data base ...
    }
    
    private void ShowPhoto_Click(object sender, RoutedEventArgs e)
    {
        //load 'imageBytes' byte array to data base ...
        BitmapImage bitmapImage = new BitmapImage();
        MemoryStream ms = new MemoryStream(imageBytes);
        bitmapImage.SetSource(ms);
        myImageElement.Source = bitmapImage;
    }

    OriginaleL’autore Stefan Wick MSFT

  2. 1

    Avrete bisogno di un WritableBitmap e conoscere l’altezza e la larghezza dell’immagine per essere in grado di fare questo.

    Allora si può fare qualcosa di simile a questo:

    var result = new WriteableBitmap(width, height);
    var ms = new MemoryStream();
    ms.Write(myByteArray, myByteArray, myByteArray.Length);
    result.SetSource(ms);
    Ho provato questo, ma ancora non funziona, penso che il problema è l’impostazione ricevuto il file per l’immagine visualizzata

    OriginaleL’autore Matt Lacey

  3. 1

    var bitmapImage = new BitmapImage();

    bitmapImage.SetSource(nuovo MemoryStream(..matrice Binaria di Dati..));

    img1.Source = bitmapImage;

    OriginaleL’autore albatross

  4. 1
    public BitmapImage ByteArraytoBitmap(Byte[] byteArray)
            {
                MemoryStream stream = new MemoryStream(byteArray);
                BitmapImage bitmapImage = new BitmapImage();
                bitmapImage.SetSource(stream);
                return bitmapImage;
            }

    ho usato questo codice prima e funziona al 100% con successo.

    OriginaleL’autore Belal Ghanem

Lascia un commento