高中生,可以选择更好的学校
热门专业

课程预订

姓名:
年龄:
学历:
电话:

QQ:

校验码:

点图更换

 

Android培训技术分享:camera 竖直拍照 获取竖直方向照片

来源:武汉北大青鸟鲁广校区   发表时间:2013-10-01 10:55

与在线专业老师直接对话交流

武汉北大青鸟鲁广校区android培训课程技术专栏会为大家陆续奉上相关技术文章,下面是关于android camera 竖直拍照 获取竖直方向照片的相关技术内容,请欣赏。

根据需求,一般分为预览时竖直和拍照后得到竖直方向的照片

一、拍照时竖直预览:

实现原理①:设置拍照的Activity为横屏

实现①:在AndroidManifest.xml相应的activity添加一句android:screenOrientation="landscape"

缺点:Activity设置为横屏之后,上面的按钮等相应的也会旋转。

实现原理②:设置预览效果为竖直方向

实现②:在Camera对象初始化之后,设置Camera对象为竖直预览

代码:

[java] view plaincopy

  1. private void setDisplayOrientation(){  

  2.    int rotation = getWindowManager()  

  3.               .getDefaultDisplay().getRotation();  

  4.    int degree = 0;  

  5.    switch (rotation) {  

  6.    case Surface.ROTATION_0:    degree = 0break;  

  7.    case Surface.ROTATION_90:   degree = 90break;  

  8.    case Surface.ROTATION_180:  degree = 180break;  

  9.    case Surface.ROTATION_270:  degree = 270break;  

  10.    }  

  11.    int result;  

  12.    CameraInfo info = new CameraInfo();  

  13.    Camera.getCameraInfo(0, info);  

  14.    if(info.facing == CameraInfo.CAMERA_FACING_FRONT){  

  15.        result = (info.orientation + degree) % 360;  

  16.        result = (360 - result) % 360;  

  17.    }else{  

  18.        result =(info.orientation - degree + 360 ) % 360;  

  19.    }  

  20.    myCamera.setDisplayOrientation(result);  

  21.    //这里的myCamera就是已经初始化的Camera对象  

  22. }  

二、得到竖直方向的照片:

实现原理:将拍照回调函数得到的Byte[]数组转化为BitMap对象,再对BitMap对象进行旋转处理

实现:贴上源代码吧

[java] view plaincopy

  1. @Override  

  2. public void onPictureTaken(byte[] data, Camera camera) {  

  3.    //将得到的照片进行270°旋转,使其竖直  

  4.    Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);  

  5.    Matrix matrix = new Matrix();  

  6.    matrix.preRotate(270);  

  7.    bitmap = Bitmap.createBitmap(bitmap ,0,0, bitmap .getWidth(), bitmap

  8. .getHeight(),matrix,true);  

  9. };  

如果需要将BitMap存储起来,代码如下

[java] view plaincopy

  1. //创建并保存图片文件  

  2. File pictureFile = new File("/sdcard/""camera.jpg");  

  3. try {  

  4.    FileOutputStream fos = new FileOutputStream(pictureFile);  

  5.    bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);  

  6.    fos.close();  

  7. catch (Exception error) {  

  8.    error.printStackTrace();  

}  

  1. 武汉北大青鸟鲁广校区android培训课程学习咨询电话:027-87808818
  • 武汉北大青鸟鲁广校区-安卓课程介绍
  • 武汉北大青鸟鲁广校区-来校路线
  • 武汉北大青鸟鲁广校区-在线咨询

作者: 武汉北大青鸟 原载: 武汉北大青鸟鲁广校区www.027hpit.com
(版权所有,转载时必须以链接形式注明作者和原始出处及本声明)

相关文章

新闻图片

Copyright 2006-2020 版权所有 武汉宏鹏职业培训学校 鄂ICP备11007753号

鄂公网安备 42011102000420号

CacheTime:2017-09-10 11:33:43 CacheID:4757