2012-04-25 53 views
3

我正試圖從相機預覽和其上的ImageView合成圖像。我有一個形象,是被設置在一個imageview的這樣合併相機預覽和圖像?

ImageView iv = new ImageView(this); 
iv.setImageResource(R.drawable.one); 

一個透明的PNG我然後將其添加到FrameLayout裏這已經顯示,像這樣我的相機預覽(繼承SurfaceView):

preview = (FrameLayout) findViewById(R.id.camera_preview); 
preview.addView(cp); //cp is a reference to a camera preview object 
preview.addView(iv); 

我的ImageView照片是這樣的:

enter image description here

而且屏幕是這樣的(我不得不採取從anothe一個知情同意[R攝像頭,因爲DDMS截圖中沒有顯示預覽只圖像和黑色屏幕,不知道這是一個相關的,雖然):

enter image description here

現在我的任務是把那張照片與ImageView的。我提出了兩種方法,我不知道他們是否可以實施

  1. 單獨保存圖片,跟蹤圖片上的封面,然後合併。可以這樣做,以及如何?
  2. 增益,其中兩個視圖是居住,並保存爲圖像的特定區域的
  3. 採取截圖的FrameLayout的樣子,我會onky這一塊做的也就是最後的手段,如果可以做到這一點

我想知道的是這些方法中的哪一個是可能的,它是如何完成的?還是有更好的方法來完成這件事?

+0

你可以添加一個視圖像相機預覽像合併單個活動上的兩個視圖 – SilentKiller 2012-04-25 12:51:50

回答

5

假設您已經有來自jpeg回調的byte[] data形式的圖像。

  1. 解碼圖像變成一個可變的位圖:

    Bitmap photo = BitmapFactory.decodeByteArray(data, 0, data.length); 
    photo = photo.copy(photo.getConfig(), true); 
    
  2. 閱讀覆蓋:

    Bitmap overlay = BitmapFactory.decodeResource(getResources(), R.drawable.one); 
    
  3. 繪製覆蓋照片:

    Canvas canvas = new Canvas(photo); 
    canvas.drawBitmap(overlay, new Matrix(), null); 
    

現在,photo應該包含您的圖像。

+0

我用2.1作爲目標構建由於BitmapFactory.Options.inMutable在該API中不可用,因此在那裏獲取可變位圖的方式是什麼水平。 – prometheuspk 2012-04-25 13:15:51

+0

你是對的,它被添加到蜂窩。我更新了我的回答 – 2012-04-25 13:19:58

+0

現在是否可變? – prometheuspk 2012-04-25 13:25:07