Benutzer mit den meisten Antworten
Bild in string und zurück

Frage
-
Hallo.
Ich bin auf der Suche nach folgendem:
Ich habe eine Datenbank, deren Schema ich leider nicht ändern kann. Nun gibt es eine Spalte vom Typ nvarchar(max) in die ich ein Bild speichern sollte. D.h. ich sollte ein Bild einlesen und das byte[] danach in einen string umwandeln. Danach wird der auf die Datenbank gespeichert. Um das Bild wieder anzuzeigen, sollte ich den String wieder von der Datenbank lesen und in ein byte[] umwandeln. Ich habe nun mal folgendes versucht, leider ohne Erfolg - d.h. das Bild aus Datei 222.jpg kann nicht mehr angezeigt werden (zum testen mal ohne Datenbank sondern lediglich mit einem Textfile als Zwischenspeicher):
FileStream fs = new FileStream("c:\\temp\\1.jpg", FileMode.Open, FileAccess.Read); byte[] picbyte = new byte[fs.Length]; fs.Read(picbyte, 0, System.Convert.ToInt32(fs.Length)); fs.Close(); var str = this.ByteArrayToString(picbyte); File.WriteAllText("c:\\temp\\111.txt", str, new System.Text.ASCIIEncoding()); str = File.ReadAllText("c:\\temp\\111.txt", new System.Text.ASCIIEncoding()); picbyte = this.StringToByteArray(str); fs = new FileStream("c:\\temp\\222.jpg", FileMode.CreateNew, FileAccess.Write); fs.Write(picbyte, 0, picbyte.Length); fs.Close(); private byte[] StringToByteArray(string str) { var enc = new System.Text.ASCIIEncoding(); return enc.GetBytes(str); } private string ByteArrayToString(byte[] arr) { var enc = new System.Text.ASCIIEncoding(); return enc.GetString(arr); }
Ich hoffe, es kann mir jemand einen Tipp geben, wie ich das Ziel erreichen kann.
Vielen Dank.
Grüsse, Thomas
Antworten
-
Hallo Thomas
Vergiss solche Text- 'Encoding',
(Ascii ist eh nur 7-Bit, und andere Encodings haben meist auch 'Lücken' im Mapping)
nimm Base64
http://msdn.microsoft.com/en-us/library/system.convert.tobase64string.aspx
http://msdn.microsoft.com/en-us/library/system.convert.frombase64string.aspx- Als Antwort markiert Kehl Thomas Montag, 25. Oktober 2010 20:10
Alle Antworten
-
Hallo Thomas
Vergiss solche Text- 'Encoding',
(Ascii ist eh nur 7-Bit, und andere Encodings haben meist auch 'Lücken' im Mapping)
nimm Base64
http://msdn.microsoft.com/en-us/library/system.convert.tobase64string.aspx
http://msdn.microsoft.com/en-us/library/system.convert.frombase64string.aspx- Als Antwort markiert Kehl Thomas Montag, 25. Oktober 2010 20:10
-
Thomas,
PS
wäre ggf für deine Tests kürzer gewesen:
File.ReadAllBytes + File.WriteAllBytes
http://msdn.microsoft.com/en-us/library/system.io.file.writeallbytes.aspx