0

我正在制作一个应用程序,在该应用程序中,我正在打开相机,在相机上方,我正在从自定义视图画布对象中绘制花卉图片。现在我想拍照我应该怎么做才能用那朵花拍照。

4

1 回答 1

0

我已经为此使用了这个布局

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" 
android:layout_width="fill_parent"
android:layout_height="fill_parent" 
android:id="@+id/layoutCam">

<FrameLayout 
    android:id="@+id/preview"
    android:layout_weight="1" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
</FrameLayout>

<ImageView 
    android:id="@+id/imgHole" 
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent"
    android:layout_gravity="center"/>

<Button 
    android:layout_width="match_parent"
    android:layout_height="wrap_content" 
    android:layout_gravity="bottom"
    android:text="Take Snap" 
    android:id="@+id/btnTakeSnap"/>
</FrameLayout>

和java代码是

 public void onClick(View v)
        {
            preview.camera.takePicture(shutterCallback, rawCallback,  postViewCallback, jpegCallback);
            chal();
        }

private boolean chal()
        {
            buttonTakeSnap.setVisibility(View.INVISIBLE);
            View v1 = camView.getChildAt(1);
            v1.setDrawingCacheEnabled(true);
            v1.buildDrawingCache();
            bmp = v1.getDrawingCache();
            v1.setDrawingCacheEnabled(true);
            buttonTakeSnap.setVisibility(View.VISIBLE);
            Toast.makeText(this, "Akhtitaam", Toast.LENGTH_SHORT).show();
            return true;
        }

使用此代码,我从 chal() 获得了两个位图;方法和第二个来自 jpegCallBack(); 方法现在您可以将这些位图放在同一布局上以重叠并捕获该视图

使用此代码

使用此方法捕获视图

public static Bitmap loadBitmapFromView(View v)
{
  Paint drawPaint = new Paint(Paint.FILTER_BITMAP_FLAG);
  drawPaint.setAntiAlias(false);
  drawPaint.setFilterBitmap(false);
  Bitmap b = Bitmap.createBitmap(v.getWidth(), v.getHeight(), Bitmap.Config.ARGB_8888);
  Canvas c = new Canvas(b);
  c.drawBitmap(b, 0, 0, drawPaint);
  v.draw(c);
  return b;
}

将相机的表面视图作为这样的参数传递

View view=(YourParentLayout) findViewById(R.id.YourParentLayout);
loadBitmapFromView(view);    
于 2013-07-11T05:29:19.893 回答