Android-如何将图片从webview.capturePicture()转换为字节[]并返回位图

Android-如何将图片从webview.capturePicture()转换为字节[]并返回位图,android,webview,bytearray,image,bytearrayoutputstream,Android,Webview,Bytearray,Image,Bytearrayoutputstream,我正在尝试捕获从webview.capturePicture()获取的图片要将其保存到sqliteDatabase,我需要将图像转换为字节[],以便将其保存为表中的BLOB,然后检索该字节[],并将其转换回位图 以下是我正在做的: Picture p = webView.capturePicture(); ByteArrayOutputStream bos = new ByteArrayOutputStream(); p.writeToStream(bos); byte[] ba =

我正在尝试捕获从webview.capturePicture()获取的图片要将其保存到sqliteDatabase,我需要将图像转换为字节[],以便将其保存为表中的BLOB,然后检索该字节[],并将其转换回位图

以下是我正在做的:

Picture p = webView.capturePicture();  
ByteArrayOutputStream bos = new ByteArrayOutputStream();  
p.writeToStream(bos);

byte[] ba = bos.toByteArray());
然后,我通过以下方式检索图像:

byte[] image = cursor.getBlob(imageColumnIndex);
Bitmap bm = BitmapFactory.decodeByteArray(image, 0, image.length);
我能够很好地检索字节[],但我一直从bitmapfactory获取空位图

我还注意到,如果我log.d(标记““+bos”),我会得到预期的长字节序列,但是如果我在执行bos.toByteArray()之后对ba执行相同的操作,我只会得到一个短数组,如下所示:[B@2b0a7c60

我猜我可能在将ByOutputStream转换为byteArray时遇到了问题。这可能是因为capturePiture()方法返回的是OutputStream而不是ByteArrayOutputStream吗


任何帮助都将不胜感激。

使用以下两个函数转换::

public String convertBitmapToString(Bitmap src) {
    String str =null; 
    if(src!= null){
        ByteArrayOutputStream os=new ByteArrayOutputStream();
    src.compress(android.graphics.Bitmap.CompressFormat.PNG, 100,(OutputStream) os);
    byte[] byteArray = os.toByteArray();
    str = Base64.encodeToString(byteArray,Base64.DEFAULT);   
    }
    return str;         
}

public static Bitmap getBitMapFromString(String src)    {
    Bitmap bitmap = null;
if(src!= null){
   byte[] decodedString = Base64.decode(src.getBytes(), Base64.DEFAULT);
   bitmap = BitmapFactory.decodeByteArray(decodedString,0,decodedString.length);
}
return bitmap;
}
更新::

//Convert Picture to Bitmap
private static Bitmap pictureDrawable2Bitmap(Picture picture){
        PictureDrawable pictureDrawable = new PictureDrawable(picture);
        Bitmap bitmap = Bitmap.createBitmap(pictureDrawable.getIntrinsicWidth(),pictureDrawable.getIntrinsicHeight(), Config.ARGB_8888);
        Canvas canvas = new Canvas(bitmap);
        canvas.drawPicture(pictureDrawable.getPicture());
        return bitmap;
    }

我仍然不知道如何将webview返回的图片转换为位图。我想我能够从图片中获得bytearrayoutstream!?但一旦转换为os.tobytearray()我似乎丢失了所有信息。若要使用您的方法,我需要先将图片转换为位图若要将图片转换为位图,您可以在Android中使用PicturedRavable类谢谢…这是丢失的一点我正在使用您的代码并在onPageFinished后转换图像,但创建空白图像有问题