第一种:String str=path;

/**
* 读取图片属性:旋转的角度
*
* @param path
* 图片绝对路径
* @return degree旋转的角度
*/
private void readPictureDegree(String filePath) {
int angle = 0;
try {
ExifInterface exifInterface = new ExifInterface(filePath);
int orientation = exifInterface.getAttributeInt(
ExifInterface.TAG_ORIENTATION,
ExifInterface.ORIENTATION_NORMAL);

switch (orientation) {
case ExifInterface.ORIENTATION_ROTATE_90:
angle = 90;
break;
case ExifInterface.ORIENTATION_ROTATE_180:
angle = 180;
break;
case ExifInterface.ORIENTATION_ROTATE_270:
angle = 270;
break;
}
} catch (IOException e) {
e.printStackTrace();
}

if (filePath != null) {
Bitmap newBitmap = BitmapFactory.decodeFile(filePath);// 根据Path读取资源图片
Bitmap bitmap = ImageTools
.zoomBitmap(newBitmap, newBitmap.getWidth() / SCALE,
newBitmap.getHeight() / SCALE);

if (angle != 0) {
// 下面的方法主要作用是把图片转一个角度,也可以放大缩小等
Matrix m = new Matrix();

int width = bitmap.getWidth();
int height = bitmap.getHeight();

m.setRotate(angle); // 旋转angle度

bitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height, m,
true);// 从新生成图片

}
if (bitmap != null) {
mListBitmap.add(bitmap);
creatImage(mListBitmap);
}
// 由于Bitmap内存占用较大,这里需要回收内存,否则会报out of memory异常
// bitmap.recycle();
}
}

第二种:Uri uri=null;

private void setImage(Uri mImageCaptureUri) {
// 不管是拍照还是选择图片每张图片都有在数据中存储也存储有对应旋转角度orientation值
// 所以我们在取出图片是把角度值取出以便能正确的显示图片,没有旋转时的效果观看

ContentResolver cr = this.getContentResolver();
Cursor cursor = cr.query(mImageCaptureUri, null, null, null, null);// 根据Uri从数据库中找
if (cursor != null) {
cursor.moveToFirst();// 把游标移动到首位,因为这里的Uri是包含ID的所以是唯一的不需要循环找指向第一个就是了
String filePath = cursor.getString(cursor.getColumnIndex("_data"));// 获取图片路
String orientation = cursor.getString(cursor
.getColumnIndex("orientation"));// 获取旋转的角度
cursor.close();
if (filePath != null) {
Bitmap newBitmap = BitmapFactory.decodeFile(filePath);// 根据Path读取资源图片
Bitmap bitmap = ImageTools.zoomBitmap(newBitmap,
newBitmap.getWidth() / SCALE, newBitmap.getHeight()
/ SCALE);

int angle = 0;
if (orientation != null && !"".equals(orientation)) {
angle = Integer.parseInt(orientation);
}
if (angle != 0) {
// 下面的方法主要作用是把图片转一个角度,也可以放大缩小等
Matrix m = new Matrix();

int width = bitmap.getWidth();
int height = bitmap.getHeight();

m.setRotate(angle); // 旋转angle度

bitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height,
m, true);// 从新生成图片

}
if (bitmap != null) {
mListBitmap.add(bitmap);
creatImage(mListBitmap);
}
// 由于Bitmap内存占用较大,这里需要回收内存,否则会报out of memory异常
// bitmap.recycle();
}
}
}

android 图片拍照图片旋转的处理方式的更多相关文章

  1. android 选择图片或拍照时旋转了90度问题

    由于前面的博文中忽略了点内容,所以在这里补上,下面内容就是解决拍照或者选择图片显示的时候图片旋转了90度或者其他度数问题,以便照片可以正面显示:具体如下: 首先直接看上面博文下的拍完照或者选完图后处理 ...

  2. Android仿微信图片上传,可以选择多张图片,缩放预览,拍照上传等

    仿照微信,朋友圈分享图片功能 .可以进行图片的多张选择,拍照添加图片,以及进行图片的预览,预览时可以进行缩放,并且可以删除选中状态的图片 .很不错的源码,大家有需要可以下载看看 . 微信 微信 微信 ...

  3. Android Camera开发系列(上)——Camera的基本调用与实现拍照功能以及获取拍照图片加载大图片

    Android Camera开发系列(上)--Camera的基本调用与实现拍照功能以及获取拍照图片加载大图片 最近也是在搞个破相机,兼容性那叫一个不忍直视啊,于是自己翻阅了一些基本的资料,自己实现了一 ...

  4. android选择图片或拍照图片上传到服务器(包括上传参数)

    From:http://blog.csdn.net/springsky_/article/details/8213898具体上传代码: 1.选择图片和上传界面,包括上传完成和异常的回调监听 [java ...

  5. Android设置拍照或者上传本地图片

    效果例如以下: 看代码: MainActivity类中: package com.example.ceshidemo; import java.io.ByteArrayOutputStream; im ...

  6. Android 实例解说加入本地图片和调用系统拍照图片

    在项目的开发过程我们离不开图片.而有时候须要调用本地的图片,有时候须要调用拍照图片.同一时候实现拍照的方法有两种,一种是调用系统拍照功能.还有一种是自己定义拍照功能. 而本博文眼下仅仅解说第一种方法, ...

  7. Android 拍照图片选取与图片剪裁

    最近从以前的项目中扒下来一个常用的模块,在这里有必要记录一下的,就是android上获取图片以及裁剪图片,怎么样?这个功能是不是很常用啊,你随便打开一个App,只要它有注册功能都会有设置人物头像的功能 ...

  8. android选择图片或拍照图片上传到server(包含上传參数)

    在9ria论坛看到的.还没測试,先Mark与大家分享一下. 近期要搞一个项目,须要上传相冊和拍照的图片.不负所望,最终完毕了! 只是须要说明一下,事实上网上非常多教程拍照的图片.都是缩略图不是非常清晰 ...

  9. H5 拍照图片旋转、压缩和上传

    原文地址:github.com/whinc/blog/… 最近接到一个“发表评论”的需求:用户输入评论并且可以拍照或从相册选择图片上传,即支持图文评论.需要同时在 H5 和小程序两端实现,该需求处理图 ...

随机推荐

  1. id和instancetype的异同

    相同点: 都可以作为方法返回值类型 在initWithName:方法中是一样的,例如: - (id)initWithName:(NSString *)name; - (instancetype)ini ...

  2. ural 1353. Milliard Vasya's Function(背包/递归深搜)

    1353. Milliard Vasya's Function Time limit: 1.0 second Memory limit: 64 MB Vasya is the beginning ma ...

  3. 华为配置SSH登陆详细步骤

    理解下SSH登录的过程: 1.建立目的端口为22的TCP连接 2.协商SSH版本 3.协商密钥和算法 4.会话建立 下面为server端的详细配置步骤: 1.创建本地RSA密钥对 rsa local- ...

  4. [NPOI2.0] 使用NPOI读取和导出Excel文件

    先来说下一直使用的 Microsoft.Office.Interop.Excel ,在系统正式使用时遇到的问题 1:Excel读取数据BUG 由于使用Microsoft.Office.Interop. ...

  5. SCANF SCANF_S

    今天在看C的教程的时候,用VS2013写了一小段代码 scanf("%f",&w); 提示需要在预编译器里添加 _CRT_SECURE_NO_WARNINGS,  百度了下 ...

  6. Chapter 2 Open Book——19

    He bent over and began scraping together a pile of the white mush. 他弯下腰,开始团起一个白色的雪球. "I'll see ...

  7. leetcode342合理运用位操作判断4的幂

    Given an integer (signed 32 bits), write a function to check whether it is a power of 4. Example: Gi ...

  8. Moss列表查询,删除条目,更新条目。

    基于Query语句的列表查询 function retrieveListItems(itemId) {    var siteUrl=_spPageContextInfo.webServerRelat ...

  9. perl脚本之目录

    来源: http://www.cnblogs.com/itech/archive/2013/02/20/2919204.html http://stackoverflow.com/questions/ ...

  10. 访问WEB-INF下的jsp/html

    基于Servlet的声明,WEB-INF不作为Web应用的公共文档树的一部分.因此,WEB-INF 目录下的资源不是为客户直接服务的.因此客户端不能直接访问WEB-INF下的文件,但是可以通过requ ...