image - 如何控制何时将图像数据加载到 Windows 应用商店应用程序中的内存中?

标签 image windows-8 io windows-runtime windows-store-apps

在 Windows Store 应用程序中创建图像时,如何控制何时从磁盘读取数据?

在 WPF 中,您可以使用 BitmapCacheOptions 控制何时从磁盘读取图像。 . BitmapCacheOptions.OnDemand将推迟从磁盘读取数据,直到实际需要图像数据。这有一些缺点:

  • IO 成本通常表现为 UI 延迟;
  • 如果使用流作为图像源,则无法关闭该流;
  • 如果文件被用作图像源,则该文件被锁定。

  • 要解决该问题,您可以使用 BitmapCacheOptions.OnLoad立即将图像读入内存。

    如何控制何时将图像数据加载到 Windows 应用商店应用程序的内存中?

    WPF 代码看起来像这样:

    var bitmapImage = new BitmapImage();
    bitmapImage.BeginInit();
    bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
    bitmapImage.UriSource = path;
    bitmapImage.EndInit();
    bitmapImage.Freeze();
    

    编辑 - 更多信息

    WPA 显示将 8.8mb 的图像显示到屏幕上需要大约 330 毫秒。其中,170ms用于文件IO(包括37ms用于防病毒检查文件),160ms用于WIC解码。

    任何想法如何控制文件 IO 何时发生或如何触发 WIC 解码?
    Right click and open in new tab to see full size
    (右键单击并在新选项卡中打开以查看完整尺寸)

    最佳答案

    对于 Windows 应用商店应用,我建议查看 AccessCache API - http://msdn.microsoft.com/en-us/library/windows/apps/windows.storage.accesscache.aspx

    特别是 StorageApplicationPermissions类(class)。有了它,您可以添加各种要访问的存储项目。

    看看FilePickerSampl e(或 FileAccessSample)应用程序以获取有关如何使用它的更多信息。

    关于image - 如何控制何时将图像数据加载到 Windows 应用商店应用程序中的内存中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18597138/

    相关文章:

    css - 调整 ionic 卡中的图像大小

    java - Android 位图缩小

    image - 在 javafx 中创建图像覆盖掩码

    go - 用 Golang 替换文件中的一行

    c - 当我将 0 作为 getline 的第二个参数传递时会发生什么?

    image - 检测两个图像重叠行的算法

    windows-8 - 从 3DS max 导出 3D 模型用于 Windows 应用商店应用程序

    c# - 我们如何检测 WIndows 8 中的系统音量?

    wpf - 在 WinRT 应用程序中为应用程序栏图标的可见性设置动画

    c - 如何在 C 中测试 CLONE_VM、CLONE_FS 和 CLONE_IO 的效果?