2012-04-25 4 views
3

Я пытаюсь сделать композитное изображение с предварительного просмотра камеры и ImageView, который был над ним. У меня есть одно изображение, которое представляет собой прозрачный PNG, который установлен на ImageView как этотСлияние камеры с изображением?

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

Я затем добавить его в 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

А экран что-то вроде этого (я должен был взять ПОС от соседний г камеры, так как снимок экрана DDMS не показывать в окне предварительного просмотра только изображение и черный экран, не знаю, если это отношение, хотя):

enter image description here

Теперь моя задача состоит в том, чтобы взять эту картину с ImageView. Я пришел с двумя подходами, оба из которых я не знаю, могут ли они или не могут быть реализованы

  1. Сохранить изображение отдельно, следить за которой крышка была на изображении, а затем сливаться некоторым образом. Можно ли это сделать и как?
  2. Gain внешнего вид framelayout, в которых оба представлениях проживающих и сохранить как изображение
  3. скриншота Take определенной области, я onky сделать эту как последнее средство, т.е., если это может быть сделано

Что я хочу знать, какой из этих подходов возможен и как это можно сделать? или есть лучший способ сделать это?

+0

Вы можете добавить представление с предварительным просмотром камеры, например, слияние двух видов на одну активность – SilentKiller

ответ

5

Предполагая, что у вас уже есть изображение в форме byte[] data из jpeg callback.

  1. Decode изображение в изменяемом растровое изображение:

    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

+0

Вы правы, это было добавлено в Соты. Я обновил свой ответ –

+0

Возможно ли теперь Mutable? – prometheuspk

Смежные вопросы