刚刚想起来前几天面试的时候遇到的一个问题,

问题大概是这样的做拍照上传图片功能的时候,在三星手机上拍出的照片是旋转了90度的,应该如何解决这个问题。因为之前没有遇到过这种问题,当时我回答的是给图片做一个ObjectAnimator的rotation动画。结果这个是错误的。 在这里做一个记录吧,防止遇到这样的问题。

造成这个问题的原因是三星堆Android相机单独做了优化。

要解决这个问题我们需要根据图片的路径读取照片EXIF(Exchangeable Image File 可交换图像文件)信息中的旋转角度。

通过下面的代码可以拿到手机拍照的图片的旋转角度,三星的是90度,而其他的手机旋转角度为0。

/

* 读取照片exif信息中的旋转角度

* @param path 照片路径

* @return角度

*/

public static int readPictureDegree(String path) {

int degree = 0;

try {

ExifInterface exifInterface = new ExifInterface(path);

int orientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);

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;

}

} catch (IOException e) {

e.printStackTrace();

}

return degree;

}

拿到图片的旋转角度就好解决了,根据被旋转了的角度旋转回来就好了。 代码如下。

public static Bitmap toturn(Bitmap img){

Matrix matrix = new Matrix();

matrix.postRotate(+90); /翻转90度/

int width = img.getWidth();

int height =img.getHeight();

img = Bitmap.createBitmap(img, 0, 0, width, height, matrix, true);

return img;

}

再说一下Android调用三星相机崩溃的问题。

原因是因为三星手机在拍照的时候会做横竖屏切换,对Activity的生命周期造成了影响。解决问题很简单在拍照所在的Activity的AndroidManifest.xml文件中配置

android:name="com.ldm.test.PhotoActivity"

android:configChanges="orientation|keyboardHidden" />

使得横竖屏切换时不会重新调用各个生命周期方法。只会执行onConfigurationChanged方法。

解决方法来自于网络,如有侵权联系本人删除。

android 三星手机拍照旋转90度,解决三星拍照上传照片被旋转90度,和三星相机崩溃...相关推荐

  1. exif.js解决ios手机上传照片后显示为旋转90度问题(兼容ios13.4之前的版本 )

    exif.js解决ios手机上传照片后显示为旋转90度问题(兼容ios13.4 ) 问题描述: 在做手机移动端app时,发现iOS12.5.1版本(iphone6)上传照片出现顺时针旋转90问题,ip ...

  2. vant 上传照片 压缩 旋转

    html 代码 <label for='uploadOne' class='photo-main' ><div class="show"><div c ...

  3. 三星手机拍照,上传照片或者下载导致图片旋转90°的解决办法。

    项目需求. 因为项目中需要对拍照之后的图片进行上传. (这也是一个简单的问题) 但是就是三星手机(三星note3),出现拍照之后照片旋转了九十度. 然后我们上传上去,然后通过其他手机请求url再次显示 ...

  4. android上传图片被旋转,input上传照片旋转解决办法

    需求很简单:h5拍照上传照片,然后显示出来 问题在:上传之后的图片在PC,IOS端均能正常显示,Android端显示的则是被旋转90度的. 直接上代码 下面这个方法传入file对象,然后会去除掉照片中 ...

  5. android 拍照上传照片(新)

    前段时间写过一片关于照片上传的文章,但是后来发现用那种方式上传的图片是经过android系统处理过的,并不是原图,也就是说经过压缩过的,图片会变得很小,今天我就是为了解决这个问题用另外一种方式实现. ...

  6. android 解决小米手机上选择照片路径为null的问题

    之前做了一个获取相册选择图片的功能,后来测试人员在小米的手机 测试时出现崩溃现象.自己就在网上查找资料,发现是小米的获取图片路径的代码与其他的手机不一样,于是修改了代码,解决了这个问题,这里记录一下. ...

  7. android小米手机上传图片,android 解决小米手机上选择照片路径为null的问题

    释放双眼,带上耳机,听听看~! 之前做了一个获取相册选择图片的功能,后来测试人员在小米的手机 测试时出现崩溃现象.自己就在网上查找资料,发现是小米的获取图片路径的代码与其他的手机不一样,于是修改了代码 ...

  8. 解决上传图片自动旋转的问题以及对图片进行压缩上传

    1. 关于图片自动旋转原因 在使用PS或者其他软件旋转图片时,图片旋转了,但Orientation不会改变,由于我们使用的图片预览器能够预处理图片,使其看起来与旋转后一致,但上传图片时,浏览器并不会预 ...

  9. 简单的 Android 拍照并显示以及获取路径后上传

    简单的 Android 拍照并显示以及获取路径后上传 Activity 中的代码,我只贴出重要的事件部分代码 public void doPhoto(View view){destoryBimap() ...

最新文章

  1. 基于ffmpeg和libvlc的视频剪辑、播放器
  2. c#求三角形面积周长公式_此题求三角形的面积,多数学生完全没思路,解题关键是用该知识点...
  3. 摩托罗拉v8对讲机驱动软件_摩托罗拉数字机如何设置“个性”提示音
  4. Apache Mesos:编写您自己的分布式框架
  5. 干货 | 深度学习的可解释性研究(一):让模型「说人话」
  6. 24 反转链表(第3章 高质量的代码-代码的鲁棒性)
  7. php趣味编程 - php 余弦曲线
  8. 基于Hadoop平台使用MapReduce统计某银行信用卡违约用户数量
  9. 反客为主:巧妙用grldr冒名顶替ntldr引导XP/Ubuntu
  10. CTF密码学解题思路
  11. keras学习笔记-黑白照片自动着色的神经网络-Alpha版
  12. 互联网高手教你如何搜集你想要的信息
  13. Oracle数据库获取当前自然周,当前周的起始和结束日期
  14. word2016 表格标尺偏移问题
  15. Oracle一个诡异的临时表空间不足的问题
  16. 新版第三方橘子/威客接单系统网站源码+有充值API接口
  17. 变频器故障代码诊断与维修
  18. Axure-图标图片元件库
  19. matlab ext2int函数,Ext2 核心 API 中文详解.pdf
  20. keepass2android 远程,关于KeePass实现mstsc远程桌面(rdp协议)的自动登录

热门文章

  1. php控制硬件电源开关模块,如何使用纯CSS实现电源开关控件(附源码)
  2. android自定义搜索栏,Android自定义View实现搜索框(SearchView)功能
  3. 记录--uniapp自定义相机 自定义界面拍照录像闪光灯切换摄像头
  4. 深度学习-各种归一化(Batch Norm、Layer Norm、Group Norm、InstanceNorm、Spatially-Adaptive Norm)
  5. visio导出pdf图片存在多余白边和边框
  6. cv曲线面积的意义_评价标准专题:常见的TP、TN、FP、FN和PR、ROC曲线到底是什么...
  7. 面试之开发知识点总结
  8. 930页!熬夜整理了一份包含算法+数据结构+大厂面经 高分原创文章的电子书送给你
  9. 天九共享集团:重视人才培育 履行幸福责任
  10. 安装node-v4.5.0-x86.msi时提示node.js setup wizard ended prematurely Win7安装nodejs失败解决方法