2011-12-02 11 views
5

Potrzebuję zrobić zdjęcie aparatem i jednocześnie pokazać obraz nad powierzchnią w widoku z kamery. Po zrobieniu zdjęcia muszę zapisać to, co zobaczył użytkownik podczas robienia zdjęcia. Czy ktoś może mnie zasugerować? Proszę.Nakładanie obrazu za pomocą zarejestrowanego aparatu w Androidzie

+0

Czy kiedykolwiek to rozgryzłeś? Muszę zrobić to samo. Nakłoniłem kamerę do pracy z nakładką, ale nie mogę zapisać tych dwóch razem jako jednego obrazu. –

+0

Możliwy duplikat [przechwytywanie obrazu z kamery i nakładanie innej mapy bitowej przed jej zapisaniem] (https://stackoverflow.com/questions/9938801/capturing-image-from-camera-and-overlaying-another-bitmap-before-we -Zapisz to) –

Odpowiedz

-1
public void onPictureTaken(byte[] data, Camera camera){ 
    Bitmap cameraBitmap = BitmapFactory.decodeByteArray(data, 0, data.length); 

    wid = cameraBitmap.getWidth(); 
    hgt = cameraBitmap.getHeight(); 


Bitmap newImage = Bitmap.createBitmap(wid , hgt , Bitmap.Config.ARGB_8888); 

    Canvas canvas = new Canvas(newImage); 

    canvas.drawBitmap(cameraBitmap, 0f, 0f, null); 

    Drawable drawable = getResources().getDrawable(R.drawable.d); 
    drawable.setBounds(20 ,20, 260, 160); 
    drawable.draw(canvas); 

    File storagePath = new File(Environment.getExternalStorageDirectory() + "/Vampire Photos/"); 
    storagePath.mkdirs(); 

    File myImage = new File(storagePath,Long.toString(System.currentTimeMillis()) + ".jpg"); 

    try 
    { 
    FileOutputStream out = new FileOutputStream(myImage); 
    newImage.compress(Bitmap.CompressFormat.JPEG, 90, out); 


    out.flush(); 
    out.close(); 
    } 
    catch(FileNotFoundException e) 
    { 
    Log.d("In Saving File", e + ""); 
    } 
    catch(IOException e) 
    { 
    Log.d("In Saving File", e + ""); 
    } 

    camera.startPreview(); 

    drawable = null; 

    newImage.recycle(); 
    newImage = null; 

    cameraBitmap.recycle(); 
    cameraBitmap = null; 
} };