Rya*_*ham 11 c# windows-phone-7
我正在尝试将位图保存为我的隔离存储作为png文件.我在Codeplex上找到了一个名为ImageTools的库,人们一直在推荐这个库,但是当我尝试它并试图打开文件时它说它已经腐败了.谁知道我做错了什么?
private static void SaveImageToIsolatedStorageAsPng(BitmapImage bitmap, string fileName)
{
//convert to memory stream
MemoryStream memoryStream = new MemoryStream();
WriteableBitmap writableBitmap = new WriteableBitmap(bitmap);
writableBitmap.SaveJpeg(memoryStream, bitmap.PixelWidth, bitmap.PixelHeight, 0, 100);
//encode memory stream as PNG
ExtendedImage image = new ExtendedImage();
image.SetSource(memoryStream);
PngEncoder encoder = new PngEncoder();
//Save to IsolatedStorage
using (var store = IsolatedStorageFile.GetUserStoreForApplication())
using (var writeStream = new IsolatedStorageFileStream(fileName, FileMode.Create, store))
{
encoder.Encode(image, writeStream);
}
}
Run Code Online (Sandbox Code Playgroud)
Pau*_*tts 16
您正在尝试将JPEG内存流转换为PNG.这将使其损坏 - 您应该将Bitmap直接保存到PNG.
我没有尝试过使用imagetools库的这个特定任务,但是如果你看到John Papa的博客,看起来你需要调用你的ToImage扩展方法,WriteableBitmap它是作为ImageTools的一部分提供的.然后,您可以使用编码器拍摄此图像并写出您的开放流.
var img = bitmap.ToImage();
var encoder = new PngEncoder();
using (var stream = new IsolatedStorageFileStream(fileName, FileMode.Create, store))
{
encoder.Encode(img, stream);
stream.Close();
}
Run Code Online (Sandbox Code Playgroud)