javascript - 使用 WinJS 将图像保存到磁盘

标签 javascript winjs

我将 Canvas 转换为图像,现在我想将图像保存到磁盘。 我的问题是: 我可以将图像保存或下载到用户磁盘吗? 我正在使用 WinJS -- JavaScript

最佳答案

当然。正如 Kraig 在 social.msdn.com: Saving a Canvas as an image in Windows 8 上针对几乎相同的问题发布的那样


var Imaging = Windows.Graphics.Imaging;
var picker = new Windows.Storage.Pickers.FileSavePicker();
picker.suggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.picturesLibrary;
picker.fileTypeChoices.insert("PNG file", [".png"]);
var imgData, fileStream = null;
picker.pickSaveFileAsync().then(function (file) {            
    if (file) {
        return file.openAsync(Windows.Storage.FileAccessMode.readWrite);                
    } else {
        return WinJS.Promise.wrapError("No file selected");
    }
}).then(function (stream) {
    fileStream = stream;
    var canvas = document.getElementById("canvas1");            
    var ctx = canvas.getContext("2d");
    imgData = ctx.getImageData(0, 0, canvas.width, canvas.height);

    return Imaging.BitmapEncoder.createAsync(Imaging.BitmapEncoder.pngEncoderId, stream);
}).then(function (encoder) {
    //Set the pixel data--assume "encoding" object has options from elsewhere
    encoder.setPixelData(encoding.pixelFormat, encoding.alphaMode,
        encoding.width, encoding.height, encoding.dpiX, encoding.dpiY,
        new Uint8Array(imgData.data));
    //Go do the encoding
    return encoder.flushAsync();
}).done(function () {
    //Make sure to do this at the end
    fileStream.close();  
}, function () {
    //Empty error handler (do nothing if the user canceled the picker
});

关于javascript - 使用 WinJS 将图像保存到磁盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19078549/

相关文章:

javascript - 提交前执行javascript

javascript - Lodash 与 typescript find 不适用于重载

javascript - 使用 jQuery 在单击时复制特定结构

javascript - 如何等待两个 promise 的结果,然后做某事?

javascript - 如何从WinJS/javascript使用WebView控件navigateToLocalStreamUri

javascript - Windows Phone 8.1 上的 WinJS.UI.Flyout HTML

javascript - 迭代对象数组并防止仅使用 javascript 的默认 anchor href 链接

Javascript 根据 id 选中/取消选中复选框

microsoft-metro - Winjs 弹出窗口位于屏幕中央

iframe - 适用于 Windows 8 应用的 YouTube iframe