如何在Android中将ImageView转换为位图图像

3

我有一个ImageView。

  LoaderImageView image=new LoaderImageView(context,path1);

在上面的语句中,它返回了一个ImageView。因此,我想将其转换为位图。如何将ImageView转换为位图图像。
   ImageView i=new ImageView(context);
   i.setImageBitmap(convertimagetobitmap);

以上语句中,我将一张位图图像(转换后的图像)设置到另一个ImageView中。


我不确定你想要做什么。:-? - Aman Alam
我想在GridView中设置一张图片。 - Ramakrishna
什么是LoaderImageView?它是扩展ImageView或其他类的类吗?请描述一下。 - chikka.anddev
以上是LoaderImageView类的代码。 - Ramakrishna
4个回答

8

看看这段代码:

// i is an imageview which you want to convert in bitmap
Bitmap viewBitmap = Bitmap.createBitmap(i.getWidth(),i.getHeight(),Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(viewBitmap);

i.draw(canvas);

就是这样,你的ImageView已经存储在位图viewBitMap中了。


所以这段代码是相同的,只需使用您的ImageView名称而不是“i”。 - chikka.anddev
它显示了一个错误。这是错误java.lang.IllegalArgumentException:宽度和高度必须> 0。 - Ramakrishna
伙计,你将图像视图 i 设置为返回值,而该方法返回的是图像视图。 - chikka.anddev
请编辑您的答案,包括当前的代码实现,并描述错误出现的具体位置。 - chikka.anddev
LoaderImageView图像的宽度和高度为零。 - Ramakrishna
显示剩余5条评论

0

请看:

ImageView.getDrawingCache();

但是您必须记住,返回的Bitmap与从资源或文件获取的不同,因为Bitmap将取决于显示器的物理属性(分辨率、缩放、颜色深度等)。


0

请查看BitmapFactory
这将让您访问位图,其中视图存储在DrawingCache中(必须打开缓存)

希望这可以帮到您!


0

这将起作用:

ImageView img;
img.setDrawingCacheEnabled(true);
Bitmap scaledBitmap = img.getDrawingCache();

//存储到临时文件

        String extr = Environment.getExternalStorageDirectory().toString();
        File mFolder = new File(extr + "/tmpfolder");
        if (!mFolder.exists()) {
            mFolder.mkdir();
        }

        String s = "tmp.png";

        File f = new File(mFolder.getAbsolutePath(), s);

        strMyImagePath = f.getAbsolutePath();
        FileOutputStream fos = null;
        try {
            fos = new FileOutputStream(f);
            scaledBitmap.compress(Bitmap.CompressFormat.PNG, 70, fos);
            fos.flush();
            fos.close();
        } catch (FileNotFoundException e) {

            e.printStackTrace();
        } catch (Exception e) {

            e.printStackTrace();
        }

        scaledBitmap.recycle();
    } catch (Throwable e) {
    }

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