Laden...

Bild über Webservice abrufen

Letzter Beitrag vor 13 Jahren 5 Posts 2.615 Views
Bild über Webservice abrufen

Hallo, gibt es eine Möglichkeit ein Bild von einem Webservice abzurufen?

Xml-Serialisierbar ist es nicht. Somit fällt dies leider raus es direkt als Rückgabe Objekt zu verwenden.

In ein Byte-Array bekomme ich das Bild auch nicht gepresst.

Aber irgendwie muss es mir doch Möglich sein dieses zu Übertragen.

Ich würde mich über Anregungen und Hilfestellungen freuen.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

Hallo,

ich habe sowas auch vor kurzem gemacht.
Dazu habe ich einfach das Bild als Byte-Array verschickt und das funktioniert ohne Probleme.

Warum kriegst du es denn nicht in den Array gepresst?

Gruß
Michael

Hi,
also ein Byte-Array kann man doch eigentlich gar nicht in einer Xml verschicken, soweit ich weiß. Dort ist es dann ein Base64-codierter string.
Also müsstest Du auch einen Base64-string vom Webservice erhalten, den Du dann umwandeln musst.
LG, Marko

Bei der Umwandlung in ein Byte-Array erhalte ich immer eine Exception dass ein ungültiger Parameter übergeben wurde.

Das könnte jedoch auch an meiner Umwandlungsmethode liegen...

Ich lade das Bild in einen MemoryStream und lasse mir von diesem das Byte-Array erstellen.

@michlG

Eventuell hast du ja einen besseren Weg gefunden. - Wie hast du denn das Bild umgewandelt?

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

Hallo,

ich habe das Bild so in den ByteArray umgewandelt.


public static BitmapImage ToBitmapImage(this Byte[] bytes)
    {
      try
      {
        var stream = new MemoryStream(bytes);
        var image = new BitmapImage();
        image.BeginInit();
        image.StreamSource = stream;
        image.EndInit();
        return image;
      }
      catch (Exception ex)
      {
        Debug.WriteLine("Can not convert the byte array into a BitmapImage. " + ex.Message);
        return new BitmapImage();
      }
    }

    public static Byte[] ToBuffer(this BitmapImage imageSource)
    {
      Stream stream = imageSource.StreamSource;
      Byte[] buffer = null;
      if (stream != null && stream.Length > 0)
      {
        using (var br = new BinaryReader(stream))
        {
          buffer = br.ReadBytes((Int32)stream.Length);
        }
      }

      return buffer;
    }

Du könntest das Bild aber auch direkt schicken. D.h. du schickst einfach den Byte Array der Datei und arbeitest dann mit diesem.

Gruß
Michael