0

我正在使用 Html/WinJS 开发的 Metro 应用程序中显示来自应用程序本地文件夹的图像。

 app.onactivated = function (args) {
 document.getElementById('img').src = "ms-appdata:///local/test.jpg";
}

我正在做的是在其他应用程序中编辑图像并在单击按钮时再次重新加载

function update() {
document.getElementById('img').src = "ms-appdata:///local/test.jpg";
}

但图像没有得到更新。它仅在应用重新启动后才会更新。

“ms-appdata:///local/”是否仅在应用重新启动时缓存数据并刷新?或者我哪里出错了,请提出建议。

谢谢。

4

1 回答 1

1

我相信将 img.src 设置为与以前相同的值不会触发重新加载,并且渲染引擎不会根据文件更改自动更新图像。您可以尝试的一个技巧是在 URI 上附加一个 ?foo= 参数,每次递增以有效地更改 URI 并触发重新加载。

或者,使用StorageFile.getFileFromApplicationUriAsync (new Windows.Foundation.Uri())打开文件。然后您可以将 StorageFile 传递给 URL.createObjectURL,并将结果分配给 img.src。那应该完全刷新图像。

请注意,出于消费目的,您不需要加载所有像素(就像您在编辑时一样),最好从 StorageFile 获取缩略图。getThumbnailAsync(或Windows 8.1 上的getScaledImageAsThumbnailAsync)并将结果传递给 URL.createObjectURL。这将避免加载整个图像,尤其是对于较小的显示尺寸,从而降低内存开销并提高性能。

于 2013-11-01T18:19:36.390 回答