从metro应用程序的本地文件夹中读取时图像不会更新

时间:2013-11-01 13:42:05

标签: html5 microsoft-metro winjs windows-8.1

我在使用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 /”缓存数据并仅在应用重新启动时刷新? 或者我出错的地方,请好心。

感谢。

1 个答案:

答案 0 :(得分:1)

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

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

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