如何将Uint8ClampedArray字符串转换为android位图?

时间:2015-08-11 17:11:24

标签: android-bitmap getimagedata

我在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());  

0 个答案:

没有答案