在網路上有看到少許的下載圖片到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;
}
它似乎是
 
arrow
arrow
    全站熱搜

    小賢 發表在 痞客邦 留言(0) 人氣()