【移动应用开发技术】怎么在Android中使用ExifInterface判断Camera图片的方向_第1页
【移动应用开发技术】怎么在Android中使用ExifInterface判断Camera图片的方向_第2页
【移动应用开发技术】怎么在Android中使用ExifInterface判断Camera图片的方向_第3页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】怎么在Android中使用ExifInterface判断Camera图片的方向

今天就跟大家聊聊有关怎么在Android中使用ExifInterface判断Camera图片的方向,可能很多人都不太了解,为了让大家更加了解,在下给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Android的Camera相关应用开发中,有一个必须搞清楚的知识点,就是Camera的预览方向和拍照方向图像的Sensor方向:手机Camera的图像数据都是来自于摄像头硬件的图像传感器(ImageSensor),这个Sensor被固定到手机之后是有一个默认的取景方向的,这个方向如下图所示,坐标原点位于手机横放时的左上角:android应用里使用相机图片时必须要考虑的一个问题就是图片朝向,只有判断对朝向才能调整图片从而更好的展现。本文将介绍一种通过ExifInterface判断图片朝向的方法!上代码:/**

*

利用给定路径下的图片设置ImageView

*

@param

imgPath

手机图片文件路径

*

@param

imgView

需要设置的ImageView

*/

public

void

setImg(String

imgPath,

ImageView

imgView)

{

File

file

=

new

File(imgPath);

if

(file.exists()

&&

file.canRead())

{

//

1.图片缩放

//

手机屏幕信息

DisplayMetrics

metric

=

new

DisplayMetrics();

getWindowManager().getDefaultDisplay().getMetrics(metric);

int

dw

=

metric.widthPixels;

//

屏幕宽

int

dh

=

metric.heightPixels;

//

屏幕高

//

加载图像,只是为了获取尺寸

BitmapFactory.Options

options

=

new

BitmapFactory.Options();

options.inJustDecodeBounds

=

true;

//

设置之后可以获取尺寸信息

Bitmap

bitmap

=

BitmapFactory.decodeFile(imgPath,

options);

//

计算水平和垂直缩放系数

int

heightRatio

=

(int)

Math.ceil(options.outHeight

/

(float)

dh);

int

widthRatio

=

(int)

Math.ceil(options.outWidth

/

(float)

dw);

//

判断哪个大

if

(heightRatio

>

1

&&

widthRatio

>

1)

{

if

(heightRatio

>

widthRatio)

{

options.inSampleSize

=

heightRatio;

}

else

{

options.inSampleSize

=

widthRatio;

}

}

//

图片缩放

options.inJustDecodeBounds

=

false;

bitmap

=

BitmapFactory.decodeFile(imgPath,

options);

//

2.判断图片朝向

try

{

ExifInterface

exif

=

new

ExifInterface(imgPath);

int

degree

=

0;

//

图片旋转角度

if

(exif

!=

null)

{

int

orientation

=

exif.getAttributeInt(

ExifInterface.TAG_ORIENTATION,

-1);

if

(orientation

!=

-1)

{

switch

(orientation)

{

case

ExifInterface.ORIENTATION_ROTATE_90:

degree

=

90;

break;

case

ExifInterface.ORIENTATION_ROTATE_180:

degree

=

180;

break;

case

ExifInterface.ORIENTATION_ROTATE_270:

degree

=

270;

break;

default:

break;

}

}

}

if

(degree

!=

0)

{

//

图片需要旋转

int

width

=

bitmap.getWidth();

int

height

=

bitmap.getHeight();

Matrix

matrix

=

new

Matrix();

matrix.preRotate(degree);

Bitmap

mRotateBitmap

=

Bitmap.createBitmap(bitmap,

0,

0,

width,

height,

matrix,

true);

imgView.setImageBitmap(mRotateBitmap);

}

else

{

imgView.setImageBitmap(bitmap

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论