2012-03-26 17 views
0

ich versuche meine string in ein 173x173 png-bild zu konvertieren. Ist das irgendwie möglich und wenn ja: wie? brauche die URL danach um sie auf meinem Backtile zu benutzen.konvertieren string zu image

die Zeichenfolge können Buchstaben, Zahlen enthalten, und "- /".

gefunden so etwas, aber nicht scheinen, überhaupt zu arbeiten:

private Uri ToImage() 
    { 
     string imageString = ""; 

     byte[] imageBytes = Convert.FromBase64String(imageString); 
     System.Text.Encoding.UTF8.GetBytes(imageString.ToCharArray(), 0, imageString.ToCharArray().Length - 1, 
     imageBytes, 0); 

     System.IO.MemoryStream ms = new System.IO.MemoryStream(imageBytes, 0, imageBytes.Length); 

     ms.Write(imageBytes, 0, imageBytes.Length); 

     BitmapImage bitmapImage = new BitmapImage(); 
     bitmapImage.SetSource(ms); 
     return bitmapImage.UriSource; 
    } 
+0

Kennt jemand diesen Code, wie ich es verstehe? :) – Ku6opr

+0

Ist das was du willst? http://www.dailycoding.com/Posts/convert_image_to_base64_string_and_base64_string_to_image.aspx –

+0

Ich kann nicht sagen, ob er ein codiertes Bild in einer Zeichenkette hat, oder er versucht, eine Zeichenkette in ein Ziegelbild zu schreiben. Welches ist es? – Robaticus

Antwort

1

Bild Fom ein base64 zu laden String Sie können es verwenden:

Image img; 
byte[] fileBytes = Convert.FromBase64String(imageString); 
using(MemoryStream ms = new MemoryStream()) 
{ 
    ms.Write(fileBytes, 0, fileBytes.Length); 
    img = Image.FromStream(ms); 
} 

Sie können auf dem Server das Bild speichern und eine URL-Datei zum Client oder senden Sie das Bild "on-the-fly" senden:

Response.ContentType = "image/png"; 
img.Save(Response.OutputStream, ImageFormat.Png); 

In diesem Fall wird die URL Bild sind die Seiten-URL, Bsp .:

img src="getBacktile.aspx?id=XXX" 
+0

Ich bin mir nicht sicher, ob das beantwortet, was er zu erreichen versucht. Obwohl, um ehrlich zu sein, ich bin mir nicht sicher, was das Ziel hier ist. Wie auch immer, eine Sache in Bezug auf Backtilexes ist, dass PNG normalerweise keine gute Wahl ist, da die Größe die maximale Größe für ein Kachelbild überschreiten kann. Ich benutze normalerweise JPG, weil auf dem Telefon jede Verlustfähigkeit des Formats normalerweise durch die kleinere Bildschirmgröße maskiert wird. – Robaticus

+0

jpg unterstützt keine Transparenz, das ist das Problem. – roqstr

+0

Das ist falsch. Windows Phone verfügt nicht über die Image.FromStream-Methode. – zi3guw

0

einfach entfernen/Kommentarzeile Code von public abstract int GetBytes (char [] Zeichen, int charIndex, int charCount , Byte [] Byte, Int ByteIndex);

System.Text.Encoding.UTF8.GetBytes(imageString.ToCharArray(), 0, imageString.ToCharArray().Length - 1, 
     imageBytes, 0); 

Es funktioniert bei mir.

Und noch etwas, konvertieren Leitungscode mit

Image img; 
byte[] fileBytes = Convert.FromBase64String(imageString); 
using(MemoryStream ms = new MemoryStream()) 
{ 
    ms.Write(fileBytes, 0, fileBytes.Length); 
    img = Image.FromStream(ms); 
} 

funktionieren nicht. Da in Windows Phone 7 keine Methode Image.FromStream (ms).