Android camera onPreviewFrame 图片旋转问题
来源:互联网 发布:大数据定义和概念 编辑:程序博客网 时间:2024/05/16 09:39
Android开发中调用到摄像头camera及截图。通过测试发现,调用前置摄像头的预览图和截图、调用后置摄像头的预览图和截图,参数是不一样的。
调用前置摄像头:
camera = Camera.open(1);
camera.setDisplayOrientation(90);//正常预览。如果参数设为270度,则预览图像为倒置。
onPreviewFrame()中调用bitmapRotated = utils.PicProcessUtils.rotaingImageView(270, bmp);//参数270度,截图为正常图。90度截图是倒置的。
调用后置摄像头:
camera = Camera.open(0);
camera.setDisplayOrientation(90);//正常预览。如果参数设为270度,则预览图像为倒置。
onPreviewFrame()中调用bitmapRotated = utils.PicProcessUtils.rotaingImageView(90, bmp);//参数90度,截图为正常图。270度截图是倒置的
详细代码如下:
private void preview() throws IOException { if (hasFrontFacingCamera()) {//如果有前置摄像头 camera = Camera.open(1); } else { camera = Camera.open(0); } camera.setDisplayOrientation(90); Camera.Parameters params = camera.getParameters(); List<Camera.Size> sizes = params.getSupportedPreviewSizes(); Camera.Size selected = sizes.get(1); width = selected.width; height = selected.height; params.setPreviewSize(640, 480);// params.setPictureFormat(PixelFormat.RGB_565);// params.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);// params.setPreviewSize(width, height); camera.setParameters(params); camera.setPreviewDisplay(holder); camera.startPreview(); }
@Override public void onPreviewFrame(byte[] data, Camera arg1) { // TODO Auto-generated method stub Log.e(TAG, "onPreviewFrame"); Camera.Size size = camera.getParameters().getPreviewSize(); final int w = size.width; final int h = size.height; final YuvImage image = new YuvImage(data, ImageFormat.NV21, w, h, null); ByteArrayOutputStream os = new ByteArrayOutputStream(data.length); System.out.println("in2"); if (!image.compressToJpeg(new Rect(0, 0, w, h), 100, os)) { return; } // System.out.println("out1"); byte[] tmp = os.toByteArray(); Bitmap bmp = BitmapFactory.decodeByteArray(tmp, 0, tmp.length); // doSomethingNeeded(bmp); //自己定义的实时分析预览帧视频的算法 if(hasFrontFacingCamera()) { bitmapRotated = utils.PicProcessUtils.rotaingImageView(270, bmp);//前置摄像头270度,后置摄像头90度 } else { bitmapRotated = utils.PicProcessUtils.rotaingImageView(90, bmp); }// iv[i].setImageBitmap(bmp1); System.out.println("out2"); ByteArrayOutputStream stream = new ByteArrayOutputStream(); bitmapRotated.compress(Bitmap.CompressFormat.JPEG, 80, stream); tmp = stream.toByteArray(); // doSomethingNeeded(bmp); Log.e("frameIndex=", frameIndex + ""); if (frameIndex < 2) { use[frameIndex] = tmp; frameIndex++; } System.out.println("out3"); return; }
public static Bitmap rotaingImageView(int angle , Bitmap bitmap) {//旋转图片 动作Matrix matrix = new Matrix();;matrix.postRotate(angle);System.out.println("angle2=" + angle);// 创建新的图片Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0,bitmap.getWidth(), bitmap.getHeight(), matrix, true);return resizedBitmap;}
相关文章android camera 通过onPreviewFrame采集视频
Android系统Camera图片反转的一个问题
解决android有的手机拍照后上传图片被旋转的问题
阅读全文
0 0
- Android camera onPreviewFrame 图片旋转问题
- android camera 通过onPreviewFrame采集视频
- android camera 通过onPreviewFrame采集视频
- Camera中onPreviewFrame()方法的视频方向旋转
- Android 图片旋转问题
- android Camera 旋转 90 °问题
- Android Camera 照相机屏幕旋转问题
- Android:Camera的使用,并处理手机拍照后上传图片被旋转的问题
- android.graphics.Camera图片绕X,Y,Z轴旋转
- Android利用Camera实现图片的旋转动画
- Android Camera拍照预览图片90度旋转
- Android利用Camera实现图片的旋转动画 .
- Android Camera拍照预览图片90度旋转
- android 拍照图片旋转问题
- android 拍照图片旋转问题
- android:camera rotate90 使用相机时旋转90度问题
- android Camera相关问题及NV12剪裁旋转
- 第一次接触Camera 绘制实时帧,关于onpreviewframe,不回调的问题
- Disruptor
- 支付系统风控系统建设思考
- PHP的四种运行模式
- MFC GDI+实现以鼠标为中心缩放图片(并且可以拖动)
- 用户模式与内核模式(2)
- Android camera onPreviewFrame 图片旋转问题
- 文本操作工具类
- linux下编程实现GPS数据获取与解析(2)
- Oracle SQL之lag()和lead()函数使用
- springboot和mybatis整合(二)
- 页面内锚点定位及跳转方法
- Java Number & Math 类
- ueditor使用
- 一个老鸟发的公司内部整理的 Android 学习路线图