将两个图像合并为一个方向问题

时间:2014-04-28 16:01:28

标签: android bitmap android-camera android-canvas android-bitmap

我想创建一个应用程序,用户可以使用后置摄像头拍照,然后使用前置摄像头。

所以,之后我得到两个位图,我想将它们组合成一个图像。

此代码用于前置摄像头参数:

//Set up picture orientation for saving...
Camera.Parameters parameters = theCamera.getParameters();
parameters.setRotation(90);
frontCamera.setParameters(parameters);

//Set up camera preview and set orientation to PORTRAIT
        frontCamera.stopPreview();
        frontCamera.setDisplayOrientation(90);
        frontCamera.setPreviewDisplay(holder);
        frontCamera.startPreview(); 

此代码用于拍摄前置摄像头

  cameraObject.takePicture(shutterCallback, rawCallback, jpegCallback);

使用后置摄像头拍照回拍

      PictureCallback jpegCallback = new PictureCallback() {
      @Override
      public void onPictureTaken(byte[] data, Camera camera) {
        backBitmap = decodeBitampFromByte(data, 0, 800, 800);   

        frontCameraObject.release();  

        initFrontCamera();  

      }       
};

注意:类似的代码用于使用前置摄像头拍照。我得到两个位图,然后我尝试将它们与下面的代码结合起来,但是我得到的位图方向错误。

这段代码用于梳理两个bitamp:frontBitmap,backBitmap。

public Bitmap combineImages(Bitmap c, Bitmap s, String loc) 
{ 
Bitmap cs = null; 

int w = c.getWidth() + s.getWidth();
int h;
if(c.getHeight() >= s.getHeight()){
 h = c.getHeight();
}else{
 h = s.getHeight();
}
cs = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); 

Canvas comboImage = new Canvas(cs); 

comboImage.drawBitmap(c, 0f, 0f, null);
comboImage.drawBitmap(s, c.getWidth, 0f, null);


    String tmpImg = String.valueOf(System.currentTimeMillis()) + ".png";

    OutputStream os = null;
    try {
        os = new FileOutputStream(loc + tmpImg);
        cs.compress(CompressFormat.PNG, 100, os);
    } catch (IOException e) {
        Log.e("combineImages", "problem combining images", e);
    }           

       return cs; 
   }  

注意带有一瓶水的图像是用后置摄像头拍摄的,另一张是用前置摄像头拍摄的。 enter image description here

1 个答案:

答案 0 :(得分:0)

尝试将comboImage.drawBitmap(s, c.getWidth, 0f, null);更改为

comboImage.drawBitmap(s, 0f,c.getHeigh, null);