在網路上有看到少許的下載圖片到LocalStorage的WinJS(javascript)範例,但是沒有找到如何從LocalStorage讀取出來的範例(可能我英文不好Orz),後來在MSDN與同事的幫助下,找到了完美解決32bit jpg檔無法用<img src>顯示的問題,在方法一中最關鍵的地方是
2013/03/06 更新
oneTimeOnly: false、或是乾脆省略不填,就不會發生有些圖可以顯示,有些不能顯示。
// 方法一(完美解決方案)
// 從localStorage讀取圖片後顯示
function loadImage(filename,baseItem)
{
var lsFolder = Windows.Storage.ApplicationData.current.localFolder;
return lsFolder.getFileAsync(filename).then(function (file)
{
return file.openReadAsync().then(function (stream)
{
var objectURL = window.URL.createObjectURL(file, { oneTimeOnly: false});
return {
file: objectURL,
item: baseItem
};
});
});
}
// 方法二(遇到32bit的jpg檔會無法顯示(變黑色),只能顯示24bit的jpg檔)
※ 2013/03/05 更新
後來經過反覆測試,發現問題是它似乎是用副檔名來辨識,32bit為png圖檔,但是副檔名卻是jpg,造成讀取的時候無法顯示,解決方法是先行將他轉成對應的png後,再讀進來就可以顯示,不過還是用上面串流的方法比較容易!
// 取得LocalStorage網址
function getURLFromLocalStorage(filename)
{
if (filename.indexOf("ms-appdata:///Local/") === -1)
{
filename = "ms-appdata:///Local/" + filename;
}
return filename;
}
它似乎是
文章標籤
全站熱搜
