Android版本webview截全屏NJS代码:
function capturePicture_android(){
var waiting = plus.nativeUI.showWaiting( "正在生成图片..." );
var Bitmap = plus.android.importClass("android.graphics.Bitmap");
var Canvas = plus.android.importClass("android.graphics.Canvas");
var view = plus.webview.currentWebview().nativeInstanceObject();
plus.android.invoke(view,"setDrawingCacheEnabled",true);
plus.android.invoke(view,"buildDrawingCache");
var width = plus.android.invoke(view,"getWidth");
var height = plus.android.invoke(view,"getContentHeight");
var scale = plus.android.invoke(view,"getScale");//WebView 缩放比例
var bitmap = Bitmap.createBitmap(width, height*scale, Bitmap.Config.ARGB_8888);
var canvas = new Canvas(bitmap);
plus.android.invoke(view,"draw",canvas);
if (bitmap != null) {
var File = plus.android.importClass("java.io.File");
var FileOutputStream = plus.android.importClass("java.io.FileOutputStream");
try{
var newFilePath = plus.io.convertLocalFileSystemURL('_doc/xxx.png');
var file = new File(newFilePath);
file.createNewFile();
var fos = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
fos.flush();
fos.close();
console.log("写入文件成功");
plus.gallery.save( '_doc/xxx.png', function () {
console.log( "保存图片到相册成功" );
plus.runtime.openFile( newFilePath,null, function ( e ) {
console.log( "Open system default browser failed: " + e.message );
plus.nativeUI.toast('openFile:'+e.message);
} );
},function(){
console.log( "保存图片到相册失败" );
plus.nativeUI.toast('保存图片到相册失败!');
});
}catch(e){
console.log(e.message);
plus.nativeUI.toast('截图成功,输出失败!');
}finally {//无论 try / catch 结果如何都会执行的代码块
if(!bitmap.isRecycled())bitmap.recycle();
waiting.close();
}
}else{
console.log("截图失败,请重试");
plus.nativeUI.toast('截图失败,请重试!');
waiting.close();
}
}
陈浩 (作者)
那么IOS的webview截所有内容生成图片做不了?
2016-07-18 10:58
DCloud_IOS_XTY
可以自己写插件
2016-07-18 10:59
陈浩 (作者)
回复 DCloud_IOS_XTY:写插件就麻烦了,还要自己购买MAC电脑,本地生成等等,你们这个平台的优势就没有了。
2016-07-18 11:03