将创建的位图图像保存到内部存储

时间:2013-11-26 14:45:29

标签: android android-layout bitmap android-image

我有一个基本的应用程序,它只使用触摸屏幕时出现的正方形和圆形。我希望能够保存这个创建的图像,设计是基于位图图像,并在画布上显示,所以我希望能够将其作为图像保存到移动设备。

public MyDraw(Context context)
{   
    super(context);
    g = new Random();
    Bitmap.Config conf = Bitmap.Config.ARGB_8888;
    bmp = Bitmap.createBitmap(1100, 1800, conf);
}

绘图代码

protected void onDraw(Canvas c)
{
    c.drawBitmap(bmp, 0, 0, paint);
    super.onDraw(c);
}

菜单代码

public boolean onCreateOptionsMenu(Menu menu)
{
    super.onCreateOptionsMenu(menu);
    MenuItem menu1 = menu.add(0, 0, Menu.NONE, "Filled Shape");
    MenuItem menu2 = menu.add(0, 1, Menu.NONE, "Outline Shape");
    MenuItem menu3 = menu.add(0, 2, Menu.NONE, "Rectangle");
    MenuItem menu4 = menu.add(0, 3, Menu.NONE, "Oval");
    MenuItem menu5 = menu.add(0, 4, Menu.NONE, "Save!");

    return true;
}

public boolean onOptionsItemSelected(MenuItem item)
{
    switch (item.getItemId())

    {
    case 0:
        MyApp.fill = 0;
        return true;
    case 1:
        MyApp.fill = 1;
        return true;
    case 2:
        MyApp.shape = 0;
        return true;
    case 3:
        MyApp.shape = 1;
        return true;
    case 4:
        // MyDraw.bmp;
    default:
        return super.onOptionsItemSelected(item);

    }
}

我希望能够单击菜单上的“保存”按钮以及已创建的位图以保存到手机内部存储(最好是图库)。

2 个答案:

答案 0 :(得分:0)

你需要做这样的事情:

MediaStore.Images.Media.insertImage(getContentResolver(), yourBitmap, yourTitle , yourDescription);

您还需要添加

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

manifext.xml

答案 1 :(得分:0)

如果你打电话:

mView.getDrawingCache();

http://developer.android.com/reference/android/view/View.html#getDrawingCache()

它将返回当前视图的位图,然后您可以调用:

mBitmap.compress( ... );

http://developer.android.com/reference/android/graphics/Bitmap.html#compress(android.graphics.Bitmap.CompressFormat,int,java.io.OutputStream)

将位图保存到磁盘。确保已在视图上启用了绘图缓存,否则getDrawingCache()将返回null。