android camera 竖直拍照 获取竖直方向照片 做缩放处理
根据需求,一般分为预览时竖直和拍照后得到竖直方向的照片
情况一、拍照时竖直预览:
实现原理①:设置拍照的Activity为横屏
实现①:在AndroidManifest.xml相应的activity添加一句 android:screenOrientation="landscape"
缺点:Activity设置为横屏之后,上面的按钮等相应的也会旋转。
实现原理②:设置预览效果为竖直方向
实现②:在Camera对象初始化之后,设置Camera对象为竖直预览
代码:
private void setDisplayOrientation(){int rotation = getWindowManager().getDefaultDisplay().getRotation();int degree = 0;switch (rotation) {case Surface.ROTATION_0: degree = 0; break;case Surface.ROTATION_90: degree = 90; break;case Surface.ROTATION_180: degree = 180; break;case Surface.ROTATION_270: degree = 270; break;}int result;CameraInfo info = new CameraInfo();Camera.getCameraInfo(0, info);if(info.facing == CameraInfo.CAMERA_FACING_FRONT){result = (info.orientation + degree) % 360;result = (360 - result) % 360;}else{result =(info.orientation - degree + 360 ) % 360;}myCamera.setDisplayOrientation(result);//这里的myCamera就是已经初始化的Camera对象
}
情况二、得到竖直方向的照片:
实现原理:将拍照回调函数得到的Byte[]数组转化为BitMap对象,再对BitMap对象进行旋转处理
实现:贴上源代码吧
@Override
public void onPictureTaken(byte[] data, Camera camera) {//将得到的照片进行270°旋转(旋转角度可以自己修改),使其竖直Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);Matrix matrix = new Matrix();matrix.preRotate(270);bitmap = Bitmap.createBitmap(bitmap ,0,0, bitmap .getWidth(), bitmap .getHeight(),matrix,true);
};
如果需要修改图片的宽高:
我们都知道手机拍下来的照片长和宽都有一个默认值(我的手机的是640 * 480),那么如果用户需要修改长宽比例,需要通过Matrix对象的postScale方法重新设置长宽比例。接着用这个Matrix对象重新创建Bitmap对象。
代码(在上一部分代码里添加一些内容就好):
@Override
public void onPictureTaken(byte[] data, Camera camera) {//完成拍照后关闭ActivityCameraActivity.this.finish();//将得到的照片进行缩放及旋转(旋转角度自己可以定),使其竖直Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);Matrix matrix = new Matrix();int width = bitmap.getWidth();int height = bitmap.getHeight();//定义新图片的宽和高(默认的好像是 640 * 480)int newWidth = 1080;int newheight = 1920;//得到缩放比例(float类型)float widthScale = (float) newWidth / width;float heightScale = (float) newheight / height;//设置缩放比例matrix.postScale(widthScale, heightScale);//设置旋转角度(如果只做缩放处理,旋转这一步可以不要)matrix.preRotate(270);bitmap = Bitmap.createBitmap(bitmap ,0,0, width, height,matrix,true);
}
如果需要将BitMap存储到本地SD卡
代码:
//创建并保存图片文件
File pictureFile = new File("/sdcard/", "camera.jpg");
try {FileOutputStream fos = new FileOutputStream(pictureFile);bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);fos.close();
} catch (Exception error) {error.printStackTrace();
}
android camera 竖直拍照 获取竖直方向照片 做缩放处理相关推荐
- android 调用系统相机拍照 获取原图
博客源址:android 调用系统相机拍照 获取原图 博客时间:2013-04-23 11:08 好吧,为了这个问题又折腾了一整天.之前在网上找来的方法,如果在onActivityResult中直接用 ...
- android camera(6)---camera2 拍照流程
android camera2 拍照流程 正文 camera2 API 的加入是从AndroidV5.0(21)开始的,因此我们使用Camera2应该是在Android 5.0(含5.0)之后.同时, ...
- Android camera相机开发拍照功能
在Android 5.0(SDK 21)中,Google使用Camera2替代了Camera接口.Camera2在接口和架构上做了巨大的变动,但是基于众所周知的原因,我们还必须基于 Android 4 ...
- Android打开相册vs拍照获取图片的原理实现
前言:这几天在做用户登陆注册的逻辑时,遇到了要修改用户的头像问题的解决.在此把实现的原理以及实现过程中遇到的问题分享个大家...留下些许脚印 在手机的app里我们常常可用看到在个人中心页面有修改头像的 ...
- Android手机拍照程序开发,android Camera开发-手机拍照流程
android 拍照API流程 1. 在布局文件中添加一个 surfaceView (摄影平面) 2.根据 SurfaceView 获得 Holder (固定器) 3.给固定器设置 SurfaceH ...
- android camera噪点,拍照时总是有很多噪点怎么办?方法很简单但你还真不知道
原标题:拍照时总是有很多噪点怎么办?方法很简单但你还真不知道 摄影时很多小伙伴对颗粒感格外偏爱,总觉得这种质感能让照片更耐看.可悲的是,有些人盲目沉迷这种效果,噪点让人像都成麻子脸了还洋洋自得. 颗粒 ...
- android从相册或拍照获取照片第三方开源库TakePhoto
TakePhoto https://github.com/crazycodeboy/TakePhoto/blob/master/README.md
- 我心依旧之Android Camera模块FW/HAL3探学序
前沿: 目前对于Android Camera软硬件技术发展的主流方向是高像素.高帧率.多摄像头.超强的ISP以及各种视频图形处理算法等等.当前主流的Android系统中较为常见的Camera模块还均是 ...
- android 竖屏拍照旋转90度,三星等机型上拍照后图片被旋转90度的解决方案
考虑到Android7.0以后拍照修改了调用和返回方式,找到了一个看起来还不错的第三方库,实际可能并非如此. -TakePhoto 在三星Note3和S6上测试,发现竖屏拍照后返回的照片是横屏的,在其 ...
- Android Camera 预览、拍照、保存照片 实现
和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 一.Camera2架构概述 二.Camera2中比较重要的类及方法 三.具体实现步骤 四.初始化相关参数 ...
最新文章
- keras构建前馈神经网络(feedforward neural network)进行多分类模型训练学习
- 【转】分享:c#和javascript函数的相互调用(ObjectForScripting 的类必须对 COM 可见。请确认该对象是公共的,或考虑向您的类添加 ComVisible 属性。)...
- Win10 基于excel 文件的python下载脚本
- 基于FPGA的智能PID控制器的设计与实现
- m.2接口和nvme区别_M.2硬盘的分类和区别
- Android Studio 安装具体步骤(配图)
- 手把手教你用express搭建个人博客(二)
- 十大经典排序算法5(Python版本)
- 新练习作,实验室网站首页——未采用
- Unity文件操作路径
- 拓端tecdat|采用SPSS Modeler的Web复杂网络对所有腧穴进行关联规则分析
- Docker教程小白实操入门(10)--如何删除一个镜像
- 2014.01.25 JFinal 使用经验积累
- Bill Gates推荐,人工智能必读的三本书 -《终极算法》,《超级智能》和《终极发明》zz
- 腾讯会议PPT演讲者模式
- Python暑期实践7.27
- 蛋蛋弹车3-具有功能安全EPS系统设计(电机控制算法-PID)
- echarts的gallery无法访问
- maven私服、将项目发布到maven私服、从私服下载jar到本地仓库、将第三方jar安装到本地仓库和maven私服
- 十二星座日期、性格、特性查询表