如何将Picture对象转换为Bitmap对象,Android

9

我该如何将一张图片转换为位图?我的代码尝试不起作用。有什么想法吗?我想要将Picture对象中的图像放入名为imageOne的ImageView中。

    showBitmap.setOnClickListener(new View.OnClickListener() {
        @Override
            public void onClick(View v) {

            Picture picture = wv.capturePicture();

           Bitmap bm = Bitmap.createBitmap(picture.getWidth(), 
                   picture.getHeight(), 
                   Bitmap.Config.RGB_565); 
   Canvas c = new Canvas(bm); 
   picture.draw(c);

   imageOne.setImageBitmap(bm);

            }
        });

你的Picture类所在的包是什么? - Quanturium
它是android.graphics.Picture。http://developer.android.com/reference/android/graphics/Picture.html - Kevik
可能是一个重复的问题,与https://dev59.com/pmPVa4cB1Zd3GeqP1gCK有关。 - loeschg
尝试这个:https://dev59.com/pmPVa4cB1Zd3GeqP1gCK - Pragnani
2个回答

18

添加这个:

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

参考:Android - 如何将webview.capturePicture()捕获的图片转换为byte[],并再次转换为位图

然后将您的代码修改如下:

showBitmap.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Picture picture = wv.capturePicture();
        Bitmap bm = pictureDrawable2Bitmap(picture); 
        imageOne.setImageBitmap(bm);
    }
});

谢谢,它有效了。但是你能解释一下为什么需要 Canvas canvas = new Canvas(bitmap);canvas.drawPicture(pd.getPicture()); 吗?当你已经创建了位图时? - beginner

0
 private static Bitmap pictureDrawable2Bitmap(Picture picture) {
    final int width = picture.getwidth();
    final int height = picture.getHeight();
    Bitmap bitmap = Bitmap.createBitmap(width, height, Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    canvas.drawPicture(picture, new Rect(0, 0, width, height));
    return bitmap;
 }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接