当我使用此功能将图像(从网上获取)保存到IsolatedStorage时,我发现文件大小比我从网页浏览中保存的大。
public static bool CreateImageFile(string filePath, BitmapImage bitmapImage)
{
//StreamResourceInfo streamResourceInfo = Application.GetResourceStream(new Uri(filePath, UriKind.Relative));
using (isolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
{
string directoryName = System.IO.Path.GetDirectoryName(filePath);
if (!string.IsNullOrEmpty(directoryName) && !isolatedStorage.DirectoryExists(directoryName))
{
isolatedStorage.CreateDirectory(directoryName);
}
if (isolatedStorage.FileExists(filePath))
{
isolatedStorage.DeleteFile(filePath);
}
//bitmapImage
using (IsolatedStorageFileStream fileStream = isolatedStorage.OpenFile(filePath, FileMode.Create, FileAccess.Write))
{
bitmapImage.CreateOptions = BitmapCreateOptions.None;
WriteableBitmap wb = new WriteableBitmap(bitmapImage);
wb.SaveJpeg(fileStream, wb.PixelWidth, wb.PixelHeight, 0, 100);
fileStream.Close();
}
}
return true;
}
使用WriteableBitmap.SaveJpeg(...)保存png图像可以吗? 是否有任何函数来获取BitmapImage的长度?
答案 0 :(得分:1)
如果是PNG,为什么要使用SaveJpeg实际存储它?为什么不简单地使用标准的“数据到文件”方法?如果它已经编码为PNG,您需要做的就是存储内容。
在这里阅读更多内容:
答案 1 :(得分:0)
转换为字节数组
byte[] data;
using (MemoryStream ms = new MemoryStream()
{
bitmapImage.SaveJpeg(ms, LoadedPhoto.PixelWidth, LoadedPhoto.PixelHeight, 0, 95);
ms.Seek(0, 0);
data = new byte[ms.Length];
ms.Read(data, 0, data.Length);
ms.Close();
}
然后只需获取字节数组的大小并转换为更合理的内容(KB,MB ...)