Android 绘图进阶(三):Xfermode绘制图片的保存

 
  本篇博客是承接上一篇Android 绘图进阶(二):Xfermode绘制涂层博客继续写进行的。在上次的内容中我们事先了一种涂层的效果,可以使用手指滑动,显露底层的背景图片,如果绘制的图片我们想要进行保存,就好像我们平时上传图片,将不想被别人看到的信息进行马赛克,之后需要进行图片的保存再上传到网络上面,那么我们要怎样实现呢?
  首先在布局中添加一个Button用于保存图片,之后我们通过对Button按钮的点击事件进行监听,创建一个file(使用系统时间作为文件名),通过Bitmap的compress方法将图片进行压缩保存。
  下面具体来看一下代码:

public class MainActivity_bitmap2 extends Activity implements OnClickListener{
    private Button mbtn_bitmap2;
    private MyBitmapView2 bitmap2;
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.bitmap_view2);
        mbtn_bitmap2=(Button) findViewById(R.id.btn_bitmapview2);
        bitmap2=(MyBitmapView2) findViewById(R.id.bitmap2);
        mbtn_bitmap2.setOnClickListener(this);
    }
    @Override
    public void onClick(View v) {
        //创建输出文件
        File file=new File(Environment.getExternalStorageDirectory(),System.currentTimeMillis()+".jpg");
      //不进行刷新的话,如果连续点击两次按钮,两次保存的图片会一样
        bitmap2.invalidate();
        //想要保存图片,必须设置setDrawingCacheEnabled使能
        bitmap2.setDrawingCacheEnabled(true);
        //创建输出的Bitmap,用于存放
         Bitmap bitmapnew=bitmap2.getDrawingCache();
         if(!file.exists()){
             try {
                file.createNewFile();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
         }
         try {
             Log.d("路径", file.getAbsolutePath());
             //通过compress将图片压缩,并放入file流中
             //参数100指的是不进行压缩,压缩率为0,如果参数为30,则30 是压缩率,表示压缩70%
            bitmapnew.compress(CompressFormat.JPEG,100, new FileOutputStream(file));
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


    }
}

最后不要忘记添加权限

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

效果图:
 
上图中我们可以看到在sdcard中我们可以找到以时间为文件名的图片。

你可能感兴趣的:(Android 绘图进阶(三):Xfermode绘制图片的保存)