Android Camera2 中对拍照的照片进行左右镜像

最近移植了android camera驱动增加了新的摄像头支持后,预览和拍照都已经可以,但发现拍照出来的照片左右镜像了,本来在hal层找到了简单方法,jpeg硬件合成可以直接有参数设置图片镜像,但修改后发现图片是镜像过来了,但是有问题(照片放大后很模糊),应该是jpeg硬件合成进行镜像会有bug,不镜像照片是正常的。那唯有在APP应用中做镜像了,在网上查阅了很多操作,但直接按照所说去修改后发现没有效果,以为matrix操作不起作用,但后来发现,对bitmap进行matrix转换后并没有把转换后的byte数据用于生成最终的图片,还是用了原始的jpegdata,因此拍照的图片没有变换,经过以下操作后,照片终于可以镜像过来,因此在此记录下:

在photoModule.java中 的void saveFinalPhoto( byte[] jpegData, NamedEntity

name, final ExifInterface exif,

CameraProxy camera)

Bitmap bitmap = CameraUtil.makeBitmap(jpegData, exifWidth*exifHeight);//jpeg byte 数组转换为bitmap

Matrix m = new Matrix();

m.postScale(1, -1);//利用matrix 对矩阵进行转换,y轴镜像

// m.postTranslate(bitmap.getWidth(), 0);

bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), m, true);//m转换传入bitmap

ByteArrayOutputStream baos = new ByteArrayOutputStream();//以下再次把bitmap转换为byte 数组,

bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);

tm_jpegData = baos.toByteArray();

getServices().getMediaSaver().addImage(

tm_jpegData, title, date, mLocation, width, height,

orientation, exif, mOnMediaSavedListener, mContentResolver);

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐