我在android中使用自定义WebView组件来显示带有HTML5画布的html页面
由于缺少对来自canvas函数的getDataUrl的WebView支持,
我通过Web视图JavascriptInterface将getImageData.data Uint8ClampedArray传递给webview。
它将图像保存为深蓝色图像。任何想法?
// html
... canvas id =“canvas”width =“20px”height =“20px”...
// javascript
imgData=context.getImageData(0,0,20,20);
webViewArray = Array.prototype.slice.call(imgData.data);
webviewApp.procData(webViewArraySTRING);
// android
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int[] results = new int[1600];
int[] icnt = 0;
int width = 20;
int height = 20;
int pos = 0, end;
while((end = webViewArraySTRING.indexOf(',', pos)) >= 0) {
results[icnt] = Integer.parseInt(webViewArraySTRING.substring(pos,end));
pos = end + 1;
icnt++;
}
//创建图片 - 尝试使用ARGB_8888,ARGB_4444
System.out.println("results size:" + icnt); // prints out 1599
Bitmap bitmap = Bitmap.createBitmap(width,height,Bitmap.Config.RGB_565);
bitmap.setPixels(results, 0, width, 0, 0, width, height);
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
//保存图片`
FileOutputStream os = new FileOutputStream(file,true);
os.write(boas.toByteArray());