html5中 save方法,如何HTML5画布另存为窗口8 Metro应用中的图像文件?(How to save html5 c...
var myImage = canvas.toDataURL("image/png");
我認為myImage在現在png格式如何保存編碼的圖像字節myImage作為一個文件(圖片文件夾)?
Answer 1:
而不是使用的.toDataUrl ,你需要使用.msToBlob :
var blob = canvas.msToBlob();
然后,你需要寫到磁盤:
var output;
var input;
var outputStream;
Windows.Storage.ApplicationData.current.localFolder.createFileAsync("yourFile",
Windows.Storage.CreationCollisionOption.replaceExisting).
then(function(file) {
return file.openAsync(Windows.Storage.FileAccessMode.readWrite);
}).then(function(stream) {
outputStream = stream;
output = stream.getOutputStreamAt(0);
input = blob.msDetachStream();
return Windows.Storage.Streams.RandomAccessStream.copyAsync(input, output);
}).then(function() {
return output.flushAsync();
}).done(function() {
input.close();
output.close();
outputStream.close();
});
在您的應用程序的應用程序數據文件夾,你現在必須寫入到磁盤的形象。
如果你想放置在別處 - 例如,我的圖片等 - 那么你只需要使用其他存儲文件夾中的一個。 見樣品這里 。 請注意,要訪問你需要的是功能添加到您的清單(只是一個復選框在VS的package.appxmanifest編輯)圖片庫
有太多的輸出文件的更復雜的操作許多其他成像選項。 看到成像樣本代碼。
Answer 2:
我發現這是代碼從簡單的成像樣品最有用位。 它可以讓你編碼為PNG或JPG,而不是僅僅傾銷畫布數據。
Helpers.getFileFromSavePickerAsync().then(function (file) {
filename = file.name;
switch (file.fileType) {
case ".jpg":
encoderId = Imaging.BitmapEncoder.jpegEncoderId;
break;
case ".bmp":
encoderId = Imaging.BitmapEncoder.bmpEncoderId;
break;
case ".png":
default:
encoderId = Imaging.BitmapEncoder.pngEncoderId;
break;
}
return file.openAsync(Windows.Storage.FileAccessMode.readWrite);
}).then(function (_stream) {
stream = _stream;
// BitmapEncoder expects an empty output stream; the user may have selected a
// pre-existing file.
stream.size = 0;
return Imaging.BitmapEncoder.createAsync(encoderId, stream);
}).then(function (encoder) {
var width = id("outputCanvas").width;
var height = id("outputCanvas").height;
var outputPixelData = Context.getImageData(0, 0, width, height);
encoder.setPixelData(
Imaging.BitmapPixelFormat.rgba8,
Imaging.BitmapAlphaMode.straight,
width,
height,
96, // Horizontal DPI
96, // Vertical DPI
outputPixelData.data
);
return encoder.flushAsync();
}).then(function () {
WinJS.log && WinJS.log("Saved new file: " + filename, "sample", "status");
id("buttonSave").disabled = false;
id("buttonRender").disabled = false;
}).then(null, function (error) {
WinJS.log && WinJS.log("Failed to save file: " + error.message, "sample", "error");
}).done(function () {
stream && stream.close();
});
文章來源: How to save html5 canvas as an image file in window 8 metro app?
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的html5中 save方法,如何HTML5画布另存为窗口8 Metro应用中的图像文件?(How to save html5 c...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 诺基亚手机n72(诺基亚手机N70)
- 下一篇: 2017年html5行业报告,云适配发布