2012-03-26 14 views
0

私の文字列を173x173のPNG画像に変換しようとしています。それはどういうわけか可能なのでしょうか?はいの場合:どうですか?私のバックタイルでそれを使用するには、後で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

するbase64で画像FOMをロードするには文字列あなたはそれを使用することができます。

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

あなたは、「オン・ザ・フライ」のサーバー上でこの画像を保存し、クライアントへのファイルのURLを送信したり、画像を送信することができます:

01この場合
Response.ContentType = "image/png"; 
img.Save(Response.OutputStream, ImageFormat.Png); 

、画像のURLは、ページのURLです、例:

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

私は彼が達成しようとしていることに答えているのか分かりません。正直言って、私は目標が何であるか分かりません。とにかく、バックタイルに関して考慮すべきことの1つは、サイズがタイル画像の最大サイズを超える可能性があるため、通常はPNGが良い選択ではないということです。私は通常、JPGを使用しています。なぜなら、電話では、フォーマットの損失性は、通常、より小さい表示サイズでマスクされるからです。 – Robaticus

+0

jpgは透明性をサポートしていません。 – roqstr

+0

これは間違っています。 Windows PhoneにはImage.FromStreamメソッドがありません。 – zi3guw

0

だけのint charIndexの、int型はcharCount パブリック抽象int型GetBytesメソッド(文字[]文字、の/コメント行のコードを削除、byte [] bytes、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)を提供していません。