由於某些數據存儲限制(noSQL),我需要將圖像作爲字符串存儲。 如何將圖像位圖序列化爲字符串並返回。 這裏是我正在做它:從字符串中加載圖片
Uri testImageUri = new Uri("/DictionaryBasedVM;component/test.jpg", UriKind.Relative);
StreamResourceInfo sri = Application.GetResourceStream(testImageUri);
var stringData = GetString(sri.Stream);
ImageSource = stringData;
哪裏
ImageControl只是在XAML中定義的Silverlight的圖像控制。
我使用以下實用功能:
//For testing
public static string GetString(Stream stream)
{
byte[] byteArray = ReadFully(stream);
return Encoding.Unicode.GetString(byteArray,0,byteArray.Length);
}
public static byte[] ReadFully(Stream input)
{
byte[] buffer = new byte[16 * 1024];
using (MemoryStream ms = new MemoryStream())
{
int read;
while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, read);
}
return ms.ToArray();
}
}
而以下屬性:
private string _ImageSource = "";
public string ImageSource
{
set
{
_ImageSource = value;
byte[] byteArray = Encoding.Unicode.GetBytes(value);
MemoryStream imageStream = new MemoryStream(byteArray);
BitmapImage imageSource = new BitmapImage();
imageSource.SetSource(imageStream);
ImageControl.Source = imageSource;
}
get
{
return _ImageSource;
}
}
我得到的錯誤: 「災難性故障(從HRESULT異常:0x8000FFFF(E_UNEXPECTED))」,如圖:
即使我不把它存儲爲一個字符串,我仍然好奇爲什麼我不能這樣做。
真棒,修復它。 +1(自第二個響應)。 PS:其ToBase64String(http://msdn.microsoft.com/en-us/library/dhx0d524(v=VS.95).aspx)和FromBase64String(http://msdn.microsoft.com/en-us/library /7y0k9etd(v=VS.95).aspx) – basarat 2011-05-18 06:45:28