将画布保存为png,在html/javascript Air应用程序中没有提示
Save canvas as png without prompt in html/javascript Air app
我使用html2canvas来创建应用程序的一个部分的屏幕截图。我确实有工作代码,但它提示用户保存。我希望png保存不提示。
这是我的工作代码(但有用户提示):
html2canvas( $('#renderCover'), {
onrendered: function(canvas) {
var base64ToByteArray = function(encStr){
var base64s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var decOut = new air.ByteArray();
var bits;
for(var i = 0, j = 0; i<encStr.length; i += 4, j += 3){
bits = (base64s.indexOf(encStr.charAt(i)) & 0xff) <<18 | (base64s.indexOf(encStr.charAt(i +1)) & 0xff) <<12 | (base64s.indexOf(encStr.charAt(i +2)) & 0xff) << 6 | base64s.indexOf(encStr.charAt(i +3)) & 0xff;
decOut[j+0] = ((bits & 0xff0000) >> 16);
if(i+4 != encStr.length || encStr.charCodeAt(encStr.length - 2) != 61){
decOut[j+1] = ((bits & 0xff00) >> 8);
}
if(i+4 != encStr.length || encStr.charCodeAt(encStr.length - 1) != 61){
decOut[j+2] = (bits & 0xff);
}
}
return decOut;
};
var dataURL = canvas.toDataURL("image/png");
dataURL = dataURL.replace(/^data:image'/(png|jpg);base64,/, "");
dataURL = base64ToByteArray(dataURL);
var file = air.File.documentsDirectory.resolvePath("Air Test/testPNG.png");
file.save(dataURL);
}
});
这是我的尝试没有提示,但我得到错误,类型强制转换失败:
html2canvas( $('#renderCover'), {
onrendered: function(canvas) {
var base64ToByteArray = function(encStr){
var base64s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var decOut = new air.ByteArray();
var bits;
for(var i = 0, j = 0; i<encStr.length; i += 4, j += 3){
bits = (base64s.indexOf(encStr.charAt(i)) & 0xff) <<18 | (base64s.indexOf(encStr.charAt(i +1)) & 0xff) <<12 | (base64s.indexOf(encStr.charAt(i +2)) & 0xff) << 6 | base64s.indexOf(encStr.charAt(i +3)) & 0xff;
decOut[j+0] = ((bits & 0xff0000) >> 16);
if(i+4 != encStr.length || encStr.charCodeAt(encStr.length - 2) != 61){
decOut[j+1] = ((bits & 0xff00) >> 8);
}
if(i+4 != encStr.length || encStr.charCodeAt(encStr.length - 1) != 61){
decOut[j+2] = (bits & 0xff);
}
}
return decOut;
};
var dataURL = canvas.toDataURL("image/png");
dataURL = dataURL.replace(/^data:image'/(png|jpg);base64,/, "");
dataURL = base64ToByteArray(dataURL);
var storage = 'documentsDirectory';
var localFile = air.File[storage].resolvePath( "Air Test/testPNG.png" );
var stream = new air.URLStream();
stream.addEventListener(air.Event.COMPLETE, function(e){
var fileData = new air.ByteArray();
stream.readBytes(fileData,0,stream.bytesAvailable);
var fileStream = new air.FileStream();
fileStream.openAsync(localFile, air.FileMode.WRITE);
fileStream.writeBytes(fileData,0);
fileStream.close();
});
stream.load(dataURL);
}
});
有没有办法将画布保存为png本地没有用户提示?
谢谢,不过我自己修好了。下面是在不需要用户提示的情况下将画布保存为.png的工作代码:
html2canvas( $('#renderCover'), {
onrendered: function(canvas) {
var base64ToByteArray = function(encStr){
var base64s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var decOut = new air.ByteArray();
var bits;
for(var i = 0, j = 0; i<encStr.length; i += 4, j += 3){
bits = (base64s.indexOf(encStr.charAt(i)) & 0xff) <<18 | (base64s.indexOf(encStr.charAt(i +1)) & 0xff) <<12 | (base64s.indexOf(encStr.charAt(i +2)) & 0xff) << 6 | base64s.indexOf(encStr.charAt(i +3)) & 0xff;
decOut[j+0] = ((bits & 0xff0000) >> 16);
if(i+4 != encStr.length || encStr.charCodeAt(encStr.length - 2) != 61){
decOut[j+1] = ((bits & 0xff00) >> 8);
}
if(i+4 != encStr.length || encStr.charCodeAt(encStr.length - 1) != 61){
decOut[j+2] = (bits & 0xff);
}
}
return decOut;
};
var dataURL = canvas.toDataURL("image/png");
dataURL = dataURL.replace(/^data:image'/(png|jpg);base64,/, "");
dataURL = base64ToByteArray(dataURL);
var storage = 'documentsDirectory';
var localFile = air.File[storage].resolvePath( "Air Test/testPNG.png" );
var stream = new air.FileStream();
stream.open(localFile, air.FileMode.WRITE);
stream.writeBytes(dataURL,0);
stream.close();
}
});
相关文章:
- 使用 JavaScript 跟踪 Adobe Air 中的鼠标位置
- 调试在 Adobe Air 中运行的 Javascript
- 使用 fdb 调试 Adobe AIR JavaScript 应用程序不起作用
- 使用 html/javascript 的 AIR 框架移动窗口
- 我可以在用于桌面AIR应用程序的Adobe Flex项目中使用JavaScript库,例如turn.js
- 如何在 Adobe Air Extension for Dreamweaver 3.3 下的 Javascript 中获
- AIR and Google Maps Javascript V3 Street View
- 有没有可以在Adobe Air应用程序中使用的JavaScript模板引擎
- Air javascript set NativeWindow alwayInFront
- 将AIR值传递给javascript.如何将其提供给$(文档).ready
- Adobe AIR:JavaScript和ActionScript结合在一起
- 有没有像KnockoutJS这样的javascript MVVM框架可以与Adobe Air一起使用
- Adobe Air应用程序全屏- HTML/XML/Javascript
- 客户端加密:Javascript vs Java Applet vs Adobe Air
- Adobe AIR JavaScript 中的本机光标与 MouseCursorData
- Adobe Air Javascript Debugging
- 如何用HTML/JavaScript在Adobe Air中显示图标文件
- 在Adobe Air/Javascript中压缩和解压缩文件
- *.php文件上的Adobe Air Javascript
- Adobe Air Javascript API