我怎样才能获得bitmapimage(jpg / png)的长度?

时间:2012-07-17 12:57:41

标签: windows-phone-7

当我使用此功能将图像(从网上获取)保存到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的长度?

2 个答案:

答案 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 ...)