Ich will eine Bitmap zu einem ByteArray konvertieren. Bis jetzt habe ich folgendes:
public static byte[] ToByteArray(this Bitmap map, System.Drawing.Imaging.ImageFormat format)
{
MemoryStream byteStream = new MemoryStream();
map.Save(byteStream, format);
byte[] buffer = new byte[byteStream.Length];
System.Diagnostics.Debug.WriteLine(byteStream.Read(buffer, 0, buffer.Length));
byteStream.Dispose();
return buffer;
}
Also ist praktisch eine Extension. Nur das komische ist wieso ist bekomm ich bei read immer 0 zurück also keine gelesenen bytes?
oh danke gibt ja schon ne funktion die das read ersetzt.
Trotzdem wundert mich das wieso ich das nicht lesen kann? CanRead ist auf true ...
Du musst die Position wieder auf 0 setzen.
Denn der "Cursor" steht nach dem Schreiben in den Stream ja ganz am Ende. Wenn du danach liest, steht ja nichts weiter dahinter.
omg jaa natürlich haste recht 😄
Hätt ich wissen können 😃
Aber eine Frage hätt ich noch und zwar erzeuge ich in einer Methode (ne andere 😄) nen MemoryStream und gebe diesen am Ende gefüllt mit Daten zurück. Wenn ich diesen aber zurück gebe habe ich CanRead auf false was nicht Sinn der Sache ist. Nun meine Frage: Laut msdn heißt das beim MemoryStream, dass er geschlossen ist. Wieso schließt er sich? Könnte es helfen wenn ich ihn als Referenz übergebe?
MSDN:
If the stream is closed, this property returns false.
Die Nachfrage hängt zwar eng mit dem Beitrag davor zusammen, aber hat eben leider nichts mit dem Titel des Threads zu tun. Siehe [Hinweis] Wie poste ich richtig? Punkt 1.2.