Android - 在来自相机的图像上合并透明png

时间:2012-09-20 11:28:18

标签: android android-camera android-image

我有一个相机预览图层。最重要的是,我正在移动(拖放)并缩放我的应用程序中的透明小图像。在那里我使用png的图像视图并使用矩阵进行缩放。 在将图像视图缩放并定位到我想要的位置之后,我需要获得一张具有相机预览背景的图片以及具有图像视图的缩放和移动位置的前景。

要做到这一点,

我正在通过相机捕捉图像。

然后我在图像视图中绘制从相机捕获的图像上的图像。

我尝试使用以下代码,但效果不佳。

    private PictureCallback mPicture = new PictureCallback() {

    public void onPictureTaken(byte[] data, Camera camera) {

        File pictureFile = getOutputMediaFile(MEDIA_TYPE_IMAGE);
        if (pictureFile == null){
            Log.d("1", "Error creating media file, check storage permissions: ");
            return;
        }

        try {
            FileOutputStream fos = new FileOutputStream(pictureFile);
            fos.write(data);
            fos.close();
            //captured=pictureFile.getAbsoluteFile();                
            picturefilepath=pictureFile.getPath();
            ImageView imgv= (ImageView) findViewById(R.id.midimage);
            //Matrix ms=imgv.getImageMatrix();

            Bitmap b=overlay(BitmapFactory.decodeFile(pictureFile.getPath()), imgv);


            ImageView capturedset= (ImageView) findViewById(R.id.capturedimage);

            capturedset.setImageBitmap(b);



        } catch (FileNotFoundException e) {
            Log.d("2", "File not found: " + e.getMessage());
        } catch (IOException e) {
            Log.d("3", "Error accessing file: " + e.getMessage());
        }



    }
};  

private Bitmap overlay(Bitmap bmp2, ImageView view) {       
    Bitmap bmOverlay = Bitmap.createBitmap(bmp2.getWidth(), bmp2.getHeight(), bmp2.getConfig());        
    Canvas canvas = new Canvas(bmOverlay);
    canvas.drawBitmap(bmp2, canvas.getMatrix(), null);        


    view.draw(canvas);


    return bmOverlay;
}

0 个答案:

没有答案