2012-03-26 3 views
0

J'essaie de convertir ma chaîne en une image png de 173x173. Est-ce que c'est en quelque sorte possible et si oui: comment? besoin de l'url après pour l'utiliser sur mon backtile.convertir la chaîne en image

la chaîne peut contenir des lettres, des chiffres et "- /."

trouvé quelque chose comme ça, mais ne semblent pas fonctionner du tout:

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

Quelqu'un comprend ce code tel que je le comprends? :) – Ku6opr

+0

Est-ce ce que vous voulez? http://www.dailycoding.com/Posts/convert_image_to_base64_string_and_base64_string_to_image.aspx –

+0

Je ne peux pas dire s'il a une image codée dans une chaîne, ou s'il essaie d'écrire une chaîne dans une image de mosaïque. Laquelle est-ce? – Robaticus

Répondre

1

Pour charger l'image d'un fom base64 chaîne vous pouvez l'utiliser:

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

vous pouvez enregistrer cette image sur le serveur et d'envoyer une URL de fichier au client ou d'envoyer l'image « à la volée »:

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

Dans ce cas, l'URL de l'image sont l'URL de la page, ex .:

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

Je ne suis pas sûr que cela réponde à ce qu'il essaie d'accomplir. Bien que, pour être honnête, je ne suis pas sûr de ce que le but est ici. Quoi qu'il en soit, une chose à considérer en ce qui concerne les backtiles, c'est que le PNG n'est généralement pas un bon choix, car la taille peut dépasser la taille maximale pour une image de tuile. J'utilise généralement le format JPG, car sur le téléphone, toute perte de format est généralement masquée par la taille réduite de l'affichage. – Robaticus

+0

jpg ne supporte pas la transparence, c'est le problème. – roqstr

+0

C'est faux. Windows Phone ne possède pas la méthode Image.FromStream. – zi3guw

0

Tout supprimer/commentaire Code de ligne GetBytes abstraites public int (char [] de caractères, int charIndex, int charCount , octet [] octets, int octetIndex);

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

Cela fonctionne sur moi.

Et chose, convertir en utilisant le code de ligne

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

ne fonctionnent pas. Depuis Windows Phone 7, ne fournissez pas la méthode Image.FromStream (ms).