2012-03-26 3 views
0

Я пытаюсь преобразовать свою строку в PNG-изображение 173x173. Это как-то возможно, и если да: как? вам понадобится URL-адрес, чтобы использовать его на моей обратной стороне.конвертировать строку в картинку

строка может содержать буквы, цифры и "- /."

нашел что-то подобное, но, кажется, не работает вообще:

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

Кто-нибудь понимает этот код, насколько я его понимаю? :) – Ku6opr

+0

Это то, что вы хотите? http://www.dailycoding.com/Posts/convert_image_to_base64_string_and_base64_string_to_image.aspx –

+0

Я не могу сказать, есть ли у него закодированное изображение в строке, или он пытается записать строку в изображение плитки. Который из них? – Robaticus

ответ

1

Для загрузки изображения FOM в base64 строка, которую вы можете использовать его:

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

вы можете сохранить это изображение на сервере и отправить URL файла клиенту или отправить изображение «на лету»:

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

В этом случае изображение URL являются URL страницы, напр .:

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

Я не уверен, что это отвечает тому, что он пытается выполнить. Хотя, честно говоря, я не уверен, что цель здесь. В любом случае, одна вещь, которую следует учитывать в отношении обратных ссылок, заключается в том, что PNG обычно не является хорошим выбором, так как размер может превышать максимальный размер для изображения плитки. Обычно я использую JPG, потому что на телефоне любая потеря формата обычно маскируется меньшим размером экрана. – Robaticus

+0

jpg не поддерживает прозрачность, вот и проблема. – roqstr

+0

Это неправильно. Windows Phone не имеет метода Image.FromStream. – zi3guw

0

Просто удалить/комментарий код строки из публичных абстрактных Int GetBytes (символьные [] гольцов, внутр CHARINDEX, внутр CharCount , byte [] байты, int byteIndex);

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

Это работает на меня.

И еще кое-что, конвертировать с помощью строки кода

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

не работают. Поскольку в Windows Phone 7 не предоставляется метод Image.FromStream (ms).

Смежные вопросы