在保存图像之前从相机捕获图像并覆盖另一个位图

时间:2012-03-30 07:37:33

标签: android android-camera

这里tempdata是从相机捕获的数据,savephoto(Bitmap)是一种用于保存从相机拍摄的图像的方法,它正在准确执行, 坚持[2] 我覆盖另一个位图,当我调用savephoto(p) 它在存储卡中创建一个空文件...... 不保存任何图像。 如何将两个位图叠加在彼此之上

[1]File Imgname = Environment.getExternalStorageDirectory();
Bitmap bmp = BitmapFactory.decodeByteArray(tempdata,0,tempdata.length);
imv.setImageBitmap(bmp);
savePhoto(bmp);

[2]Bitmap bmp2 = BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher);
Bitmap b = Bitmap.createBitmap(bmp.getWidth(), bmp.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(b);
canvas.drawBitmap(bmp, 0,0, null);
canvas.drawBitmap(bmp2, 50, 50, null);
savePhoto(b);

任何帮助将不胜感激 感谢名单

1 个答案:

答案 0 :(得分:2)

在从相机获取位图(假设位图1)并将位图叠加到位图1之后(假设位图2)之后,你可以这样做 用你的位图调用这个overlayMark(),它将返回覆盖位图,这是你需要的位图。你可以保存那个位图..

private Bitmap overlayMark(Bitmap bmp1, Bitmap bmp2)    { 
   int bh = originalBitmap.getHeight();
   int bw = originalBitmap.getWidth();
   Bitmap bmOverlay = Bitmap.createBitmap(bw,bh,Bitmap.Config.ARGB_8888); 
   Canvas canvas = new Canvas(bmOverlay); 
   canvas.drawBitmap(bmp1, 0, 0, null);
   canvas.drawBitmap(bmp2, 0,0, null);
   return bmOverlay;
}