Metro-APP - BitmapImage zu Byte[] oder Download-Bild aus dem Web und wandelt Sie in ein Byte [] - Array
Gibt es eine Möglichkeit, zu konvertieren, ein BitmapImage (Windows.UI.Xaml.Media.BitmapImage) zu einem Byte [] - Array? Nichts, was ich versucht habe zu arbeiten....
Ein anderes mögliches Szenario (wenn BitmapImage nicht konvertiert werden zu Byte-array) laden Sie das Bild aus dem web und dann konvertieren Sie Sie in ein array...
Aber ich weiß nicht, wie ich das tun kann...
Es wäre wirklich schön, wenn jemand eine Idee hat.
Aktuellen versuchen:
HttpClient http = new HttpClient();
Stream resp = await http.GetStreamAsync("http://localhost/img/test.jpg");
var ras = new InMemoryRandomAccessStream();
await resp.CopyToAsync(ras.AsStreamForWrite());
BitmapImage bi = new BitmapImage();
bi.SetSource(ras);
byte[] pixeBuffer = null;
using (MemoryStream ms = new MemoryStream())
{
int i = bi.PixelHeight;
int i2 = bi.PixelWidth;
WriteableBitmap wb = new WriteableBitmap(bi.PixelWidth, bi.PixelHeight);
Stream s1 = wb.PixelBuffer.AsStream();
s1.CopyTo(ms);
pixeBuffer = ms.ToArray();
}
Aber es funktioniert nicht... ich & i2 sind immer auf 0 gesetzt. Also ras funktioniert nicht richtig.... Was ist Los?
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Ihrem code, den Sie sind nie zu warten, für die BitmapImage-laden Sie das Bild aus dem web, so dass es nicht wissen, dass seine PixelWidth/Pixelhöhe, wenn Sie Zugang zu Ihnen haben. Sie konnte warten, bis es geladen ist - zum Beispiel mit der AsyncUI - Bibliothek durch Aufruf von "warten auf bi.WaitForLoadedAsync()". Das würde dir nicht wirklich helfen hier, wenn Sie wollen, um den Zugriff auf die dekodierten Pixel da BitmapImage nicht geben Ihnen Zugriff auf die Pixel und es derzeit noch keine API zum konvertieren ein BitmapImage in eine WriteableBitmap.
Können Sie eine frühere Frage über das Thema. Würden Sie benötigen, um die image-Datei aus dem web mit so etwas wie HttpClient.GetAsync(), dann laden Sie es mit so etwas wie BitmapDecoder.