我想创建一个应用程序,用户可以使用后置摄像头拍照,然后使用前置摄像头。
所以,之后我得到两个位图,我想将它们组合成一个图像。
此代码用于前置摄像头参数:
//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;
}
注意带有一瓶水的图像是用后置摄像头拍摄的,另一张是用前置摄像头拍摄的。
答案 0 :(得分:0)
尝试将comboImage.drawBitmap(s, c.getWidth, 0f, null);
更改为
comboImage.drawBitmap(s, 0f,c.getHeigh, null);