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);

}

} catch (IOException e) {

}

}

}

linux怎么设置桌面朝向,Android判断相机图片朝向相关推荐

  1. 《Android开发卷——设置圆形头像,Android截取圆形图片》

    在有一些程序开发中,有时候会用到圆形,截取一张图片的一部分圆形,作为头像或者其他. 本实例就是截图圆形,设置头像的.      首先讲解一些代码 <ImageView android:id=&q ...

  2. linux 浏览器源码下载,Android开发:图片浏览器源码

    Android 图片浏览器源码,是你学习Android很好的例子,希望对你的学习有帮助. main.xml android:layout_width="fill_parent" a ...

  3. android 4.2 判断桌面快捷,Android 判断桌面是否快捷方式,不存在则创建

    要创建快捷键首先要在AndroidManifest中添加权限 /** * 快捷方式是否存在 * * @return */ public static boolean ifAddShortCut(Con ...

  4. 计算机桌面图片怎么设置大小,怎么设置桌面壁纸大小

    很多人都知道怎麽设置电脑桌面,可真正找到适合自己屏幕的可能很少,图片或大或小,小编为大家分享了设置桌面壁纸大小的方法,下面大家跟着小编一起来了解一下吧. 设置桌面壁纸大小方法 先查看自己电脑屏幕分辨率 ...

  5. Linux如何让一个.sh文件可双击执行 并设置桌面启动图标

    Linux如何让一个.sh文件可双击执行并设置桌面启动图标 linux下怎么设置一个.sh文件可执行 参考资料: https://blog.csdn.net/ahelloyou/article/det ...

  6. linux fedora kde桌面设置全局显示字体大小

    linux fedora kde桌面设置全局显示字体大小

  7. linux 轻量化图形界面,Linux轻量化桌面环境LXDE之时钟设置技巧

    台湾产,Ubuntu承认,Linux轻量化桌面环境之一LXDE,使用说明之数字时钟:由于装好系统后默认显示的数字时钟过于简单且单调,我打开时钟设置,对其进行了极其无聊地探索,兴许对后人有帮助. 对设置 ...

  8. linux打开xmanager服务,用xmanager连接linux远程桌面-linux服务器设置及xmanager设置

    用xmanager连接linux远程桌面 linux服务器端设置: ========================================1. 修改/etc/inittab,改变runlev ...

  9. android 背景图片自适应屏幕大小,android 设置桌面背景图片适应屏幕大小

    今天做demo,设置桌面每天自动更新背景,但是桌面的背景都是被系统裁剪过的图片,上网百度了一下,有个过时的方法,改进后果然有用了! Bitmap bmp=BitmapFactory.decodeRes ...

最新文章

  1. 《Maven 实战》笔记之setting.xml介绍
  2. 用于RGB-D语义分割的全局-局部传播网络
  3. JavaScript--事件模型
  4. C# 学习笔记(9)线程
  5. java 中的chartdata_获取Helm Charts中的文件夹列表
  6. java请假审批怎么实现_java实现请假时间判断
  7. permutation 2(HDU-6630)
  8. 54 FI配置-财务会计-固定资产-主数据-更改评估组的关键词
  9. linux上 arm开发环境搭建,详解 LINUX下QT For ARM开发环境搭建过程
  10. POJ 2960 博弈论
  11. 【编程科普】服务器的软件和硬件
  12. 磁盘不见了只剩一个c盘_电脑硬盘分区突然见了就剩个C盘到磁盘管理看也只有C盘...
  13. 英雄联盟LOL静态HTML网页制作模板DⅣ+CSS学生网页作品代码游戏题材大学生网页设计作业下载
  14. java是面向对象还是面向过程_Java面向对象编程和面向过程编程的区别
  15. 电路逻辑门图形符号汇总
  16. opensim源码安装教程
  17. java数字转大写_java实现数字转大写的方法
  18. 16/10/2019 一步步学会分析ATAC-seq
  19. 版本 3.1(最终版)
  20. ubuntu安装和卸载软件命令

热门文章

  1. plot.figue中设置图片的大小
  2. apk在模拟器中能运行而手机中运行不了
  3. 揭开NVR迷雾:NVR不是DVR的替代者
  4. 决定女人一生的七种智慧
  5. 共享雨伞,雨你同行——“伞之缘”共享雨伞上线酒楼、健身房、网吧……(二)
  6. Cocos2d-x 3.2 大富翁游戏项目开发-第三十部分 项目移植
  7. 用ajax修改成功怎么返回页面,jquery操作ajax返回的页面元素
  8. 记录:tensoflow改错TypeError: Cannot interpret feed_dict key as Tensor: Can not convert a float into a Te
  9. 超详细的A-level课程介绍
  10. 71页智慧工地整体解决方案