Android 手机展示照片 会有90°旋转的问题的解决方案

Android进阶之路 - 解决部分手机拍照之后图片被旋转的问题 这几天犯了一个错误,初期想着甩锅给后台的,但是还好及时发现了是自身的问题~ 产生问题:通过拍照或相册回传的照片,直接传入后台,在用于展示的时候,照片角度出现问题,均不规则的旋转了90度,从而导致体验效果变差! 问题思考:后台一般都是你怎么存的,它怎么给你拿出来!所以在这里就可以发现问题本身是由我们前端造成的! 覆盖范围:图片被旋转的情况并不是百分百出现在每个机型上,只是会出现在某一部分机型之... 阅读详情

问题场景:

1.iOS系统的苹果手机竖屏拍照或者从相册选择竖屏情况下拍的照片上传到tfs服务器安卓手机下载展示的时候是旋转了90°的图片,但是苹果手机展示没有问题.

        我去网上进行原因的查找,发现iphone默认横屏拍照才是正确的方向,所以竖屏拍照会携带逆时针旋转90°的信息.

经过多番验证,苹果手机竖屏拍照上传的时候,是存在逆时针旋转90°的标识的,上传到服务器之后返回链接

        http://7xrqzv.com1.z0.glb.clouddn.com/mbp-head-image-dev-20042399-1483772239277.png(链接可能失效~~)

        直接看在浏览器打开的结果:在IE浏览器上查看是逆时针旋转90°,但是在chrome浏览器上查看是正常的;

下载之后查看的结果:在windows上从任一浏览器下载,利用windows自带的图片查看器查看就是逆时针旋转90°的,利用爱奇艺图片查看器查看就是正常的,但是在Mac上下载,查看都是正常的,下载下来之后存在安卓手机本地相册发现还是旋转90°的图片.

结论:我发现每个系统,软件对于图片的处理是不一样的,有一些是不会对角度进行处理,有角度就让他存在在信息里不去旋转,有一些就按照角度进行旋转,将角度变成0°存在信息里.

        解决方案:IOS在上传图片之前首先进行旋转角度信息的检查,将不是0°的情况都改变成0°.

2.部分安卓手机(如MT788,Note2)竖屏拍照直接将图片传过来展示的时候是旋转了90°的图片,但是上传到tfs再下载下来展示的图片又是正常的.

      

public static Bitmap rotateBitmap(Bitmap b, String filepath) {
        int degrees = getExifOrientation(filepath);
        if(degrees != 0 && b != null) {
            Matrix m = new Matrix();
            m.setRotate((float)degrees, (float)b.getWidth() / 2.0F, (float)b.getHeight() / 2.0F);

            try {
                Bitmap b2 = Bitmap.createBitmap(b, 0, 0, b.getWidth(), b.getHeight(), m, true);
                if(b != b2) {
                    b.recycle();
                    b = b2;
                }
            } catch (OutOfMemoryError var5) {
                ;
            }
        }

        return b;
    }

 

 

 

public static int getExifOrientation(String filepath) {
        short degree = 0;
        ExifInterface exif = null;

        try {
            exif = new ExifInterface(filepath);
        } catch (IOException var4) {
            ;
        }

        if(exif != null) {
            int orientation = exif.getAttributeInt("Orientation", -1);
            if(orientation != -1) {
                switch(orientation) {
                case 3:
                    degree = 180;
                case 4:
                case 5:
                case 7:
                default:
                    break;
                case 6:
                    degree = 90;
                    break;
                case 8:
                    degree = 270;
                }
            }
        }

        return degree;
    }

     通过这两个方法,先获取到旋转的角度信息再进行旋转即可解决.

 

以上是我自己真实遇到的问题,可能在你们开发的过程中也有过类似的但是不完全相同的经历,希望我的解决方案帮助到大家.

Android 自定义拍照实例(解决竖拍照片横向问题) 原文:http://blog.csdn.net/u012964281/article/details/41143169 立即下载

相关推荐

Android部分手机拍照后获取的图片被旋转问题的解决方法

调用Android系统拍照功能后,三星手机拍摄后的照片被旋转了90度,横着拍给你变成竖的,竖的拍给你变成横的。其它品牌的手机都是正常的,就三星出现这个怪事。 在Android适配上,我原来一直以为国内的小米手机够奇葩了,结果还有更奇葩的!你说你没事旋转照片干啥,实在是猜不透其居心何在,纯粹是在给开发者制造麻烦啊! 解决办法是获取到拍照后照片被旋转的角度,再旋转回去就好了。 具体思路: 1、首先在调用拍照方法时,保存拍照后的相片原图,得到原图路径,(PhotoBitmapUtils是我自己写的一个工具类) String fileName = ; /** * 启动相机拍照 */ p

关于Android手机拍照预览、剪裁界面出现照片九十度旋转的问题

案场还原: 最近做的项目,测试机小米6X及本人的努比亚Z11测试拍照环节均正常,但在领导的三星手机及Oppo FindX上就出现了奇葩现象,拍照完预览照片、剪裁照片出现了九十度的旋转,如果这时候你用模拟器,比如Genymotion也能发现此问题,预览及剪裁出现旋转。 原因排查: 通过搜索大量墙里墙内资料,原因大概总结为以下几点,自我理解,若有不对,还望指正: Android原生系统设...

u013214588的博客 3312

iOS拍照后图片自动旋转90度的完美解决方法

今天开发一个拍照获取照片的功能的时候, 发现上传之后图片会自动旋转90. 测试发现, 只要是图片大于2M, 系统就会自动翻转照片   相机拍照后直接取出来的UIimage(用UIImagePickerControllerOriginalImage取出),它本身的imageOrientation属性是3,即UIImageOrientationRight。如果这个图片直接使用则没事,但是如果对它进行裁剪、缩放等操作后,它的这个imageOrientation属性会变成0。此时这张图片用在别的地方就会发生旋转。imageOrientation是只读的,不能直接修改其值。 解决方法如下: 1. 设置相

android 竖屏拍照旋转90度,三星等机型上拍照后图片被旋转90度的解决方案

考虑到Android7.0以后拍照修改了调用和返回方式,找到了一个看起来还不错的第三方库,实际可能并非如此。-TakePhoto在三星Note3和S6上测试,发现竖屏拍照后返回的照片是横屏的,在其它手机上又是正常的。查了资料发现三星手机很多都有这个问题,看到了歪果仁开发者对这个问题近乎骂街的回复,发现这属于三星的一个系统级Bug。竖屏拍照后得到的照片文件就是横屏的,只有应用对这些照片重新处理。/*...

weixin_28860509的博客 983

LightGBM参数调优实战:从基础到高级技巧

本文深入探讨了LightGBM参数调优的实战技巧。文章从理解其Leaf-wise生长策略的核心逻辑出发,系统性地介绍了分层调参策略:首先调整控制模型结构的参数(如num_leaves),其次优化学习能力参数(如learning_rate),最后通过正则化与随机化参数提升泛化能力。文中还提供了从建立基线到最终微调的完整实战流程与高级避坑指南,帮助读者高效提升模型性能。

i8j9k0l1的博客 262

openEuler 20.03 LTS面向RK3399移植系列(3)—openEuler 20.03 LTS面向Firefly RK3399的第一个版本(Linux kernel 4.4)

任务动机:完成openEuler面向RK3399开发板的移植。 任务描述:按照固件烧写准备,固件获取,固件打包和烧写的步骤实现openEuler面向RK3399开发板的移植,整理过程和相关命令记录到文档。 1. 制作openEuler的rootfs.img 1.1 开发环境 树莓派--openEuler系统 openEuler 20.03 LTS 的内测版本镜像,下载。 1.2 具体操作 1.2.1 ssh远程连接树莓派 确定树莓派IP ssh连接 1.2.2 制作rootfs.img

火种源码的机器人技术专栏 2368

Android开发之获取相册照片和获取拍照照片三之 图片旋转

在做照相机图片相关操作的时候,由于android手机的适配原因,不同手机上出发的相机操作可能在细节上有很多不同,例如摄像头拍照的角度旋转了,使得获取到的图片也是旋转后的,再比如某些相机的图片像素太高了,对图片数据进行操作的时候造成内存不足等。下面就对相机拍摄时的图像被旋转的问题进行一些实际的解决方案: 问题:由于摄像头拍照 是竖屏,显示的时候需要旋转了 90 度。也就是说显示的是 旋转90度后的

Beyond0525的专栏 6797

京东技术产品经理面试全记录:从简历投递到一面45分钟实战复盘

本文深度复盘京东技术产品经理面试全流程,从策略准备、思维题拆解、项目阐述到反问谈判,提供了一套可演练的求职策略体系。文章强调该岗位需具备横跨技术与商业的枢纽能力,并通过“QQ分组vs微信标签”等案例,剖析了产品思维与结构化表达在面试中的关键作用,助力候选人将紧张转化为掌控感。

weixin_29275257的博客 629

ios手机上传竖拍照片旋转90度问题

ios手机及部分安卓手机上传竖拍图片旋转90度的问题@TOC 利用exif.js插件解决ios手机上传竖拍照片旋转90度问题 问题描述:移动端手机照片上传时,发现ios手机上传竖拍图片会逆时针旋转90度,横拍照片无此问题,部分安卓手机存在此问题。 解决思路 获取到照片拍摄的方向角,对非横排的ios照片进行角度旋转修正。 Exif.js提供了JavaScript读取图像的原始数据的功能扩展,例如:拍...

sinat_26432415的博客 2732

WPF的基础设施:XAML基础语法

XAML是WPF的核心标记语言,采用XML语法实现界面与逻辑分离。其基础语法包括:1)控件声明方式(特性语法和属性元素语法);2)x:Name与Name的区别(适用范围和编译行为);3)注释规范与代码折叠技巧;4)实用特性如属性继承、附加属性等。文章还提供了常见错误排查方法,建议通过实践练习掌握XAML开发技巧。全文系统介绍了XAML的核心语法与应用场景,是WPF开发者的基础学习指南。

Hare的博客 1755

SAP ABAP Web Service 的创建与消费:保姆级教程

SOAP 定义了消息的格式和传输规则,使得 Web Service 可以在不同的操作系统和网络环境中通信。通过 WSDL,服务的提供者可以明确地定义服务的功能,而服务的使用者则可以通过解析 WSDL 文件,了解如何正确地调用该服务。它封装了与 Web 服务通信的所有复杂性,如消息格式的构建、传输协议的选择、请求的发送和响应的处理等。除了本文介绍的 ABAP 编程语言之外,我们还可以通过 Java,Node.js,C++,C#,Python 等其他编程语言来消费本文创建的 ABAP Web Service.

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 713

iOS手机竖着拍的照片被旋转了90°的原因以及解决方案

最近项目发现ios竖屏拍照上传图片文件时候,照片自动选中为横屏。 经过测试发现,只有iOS手机竖着拍的照片才会出现这样的问题,而iOS手机横着拍的照片、Android手机拍的照片以及通过屏幕截图、网络下载等途径获得的图片都不会产生这个问题。 经过查找资料发现需要引入了一个叫做 exif.js 的库来实现旋转角度的纠正,它提供了js读取图像的原始数据的功能扩展,例如:拍照方向、相机设备型号、拍摄时间、ISO 感光度、GPS 地理位置等数据。而拍照方向就是关键所在! exif.js 获取图像的拍照方向的代码如下

weixin_44433499的博客 1万+

Autosar诊断实战系列23-NRC优先级解析

NRC分类,优先级判断逻辑及测试注意事项介绍。

initiallizer的博客 2617

安卓webview内嵌h5页面,img展示的图片被左旋转90°

问题描述和分析: 目前H5的图片展示在IOS是正常的 在Android上展示会出现旋转90度的情况 查找资料之后 发现是这样的问题导致的: 在IOS那边拍照上传照片之后 默认会把图片旋转了90度 IOS的浏览器内核去处理照片的时候 会自动检测当前图片的Exif信息 的到角度信息 去自动旋转处理 Android某些的浏览器内核不会去处理图片的角度信息 所以导致了了H5上的图片在Android某些机型...

weixin_42911554的博客 2343

为分析表明卡诺电池技术(或热泵式储电技术)-是目前最佳的储能技术!!!-2021年

卡诺电池(Carnot Battery)是一种基于热力学循环的储能技术,其核心原理是通过热力循环将电能转化为热能存储,并在需要时将热能重新转换为电能输出。这种技术得名于热力学中的卡诺循环原理,由法国工程师卡诺于1824年提出。

qq_15963745的博客 655

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

ios手机竖屏拍照图片旋转90°问题解决方法

手机拍照会给图片添加一个Orientaion信息(即拍照方向),如下: 用ios手机拍照,系统会给图片加上一个方向的属性, ios相机默认的拍照方向是后摄Home键在右为正,前摄Home键在左为正。 1代表正常的拍摄角度,ios横屏下拍摄、安卓机无论横屏竖屏拍摄,Orientaion的值都为1;但是ios竖屏拍摄,Orientaion的值为6,即竖着拍出的照片被添加了一个顺时 针旋...

weixin_34087307的博客 1267

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

android 点击图片旋转90度,h5解决手机上竖拍照片旋转90度问题

移动端手机照片上传时,发现手机上传竖拍照片会逆时针旋转90度,横拍照片无此问题.EXIF.getData(document.getElementById('imgElement'), function(){EXIF.getAllTags(this);EXIF.getTag(this, 'Orientation');});Orientation属性说明如下:旋转角度参数0°1顺时针906逆时针90°...

weixin_39978101的博客 586

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

记一个使用系统相机拍照后照片被旋转的问题

最近在做项目的自定义相册时,遇到了这么一个问题:从 小米9 手机上面的拉起系统相机进行拍照,然后上传到服务器上面,发现图片莫名其妙就旋转了 90° ,这个并不符合业务方的需求,在仔细分析后,发现拍照后,系统保存到本地的照片已经给旋转过了 因此要解决这个问题,就只有在拍照后,判断图片是否给旋转,如果有,就将它旋转回去 要获取图片的旋转信息,其实就是要获取图片的 Exit 信息,它里面存储了图片的全部参数,我们可以通过 ExifInterface 来获取到这个数据: /** * 读取图片的旋转的角度 *.

FritzXu的博客 2625

PC端、移动端手机竖拍原图压缩上传顺时针旋转90°的解决方案

问题背景 最近在做的项目中,不管是移动端还是后台系统都涉及到了手机照片压缩上传的问题,做完功能测试的时候发现图片回显的时候有些顺时针旋转了90°(竖拍照片,不管是ios还是android都存在这问题),后来百度了一下才知道是跟图片的EXIF(可交换图像文件格式)中的Orientation(旋转参数)有关,那么问题就好处理了,我们可以获取上...

weixin_33901926的博客 656

利用exif.js解决ios或Android手机上传竖拍照片旋转90度问题

html5+canvas进行移动端手机照片上传时,发现ios手机上传竖拍照片会逆时针旋转90度,横拍照片无此问题;Android手机没这个问题。 因此解决这个问题的思路是:获取到照片拍摄的方向角,对非横拍的ios照片进行角度旋转修正。 利用exif.js读取照片的拍摄信息,详见 http://code.ciaoca.com/javascript/exif-js/ 这里主要用到Or...

a616735104的博客 753

html上传图片利用exif.js解决ios手机上传竖拍照片旋转90度问题

html5+canvas进行移动端手机照片上传时,发现ios手机上传竖拍照片会逆时针旋转90度,横拍照片无此问题;Android手机没这个问题。 因此解决这个问题的思路是:获取到照片拍摄的方向角,对非横拍的ios照片进行角度旋转修正。 利用exif.js读取照片的拍摄信息,详见http://code.ciaoca.com/javascript/exif-js/ 这里主要用到Orienta...

刺心的博客 586

Android照相机模块编程 照片颠倒问题及查询摄像头参数问题的解决

这两天编程弄Android照相机模块,设置好各种参数后,发现预览的时候,照片是颠倒了,不是上下颠倒而是颠倒90°。 我的手机是华为U9200,用的Android4.0.3,后来看到http://www.cnblogs.com/skyseraph/archive/2012/03/26/2418665.html这篇文章,增加代码:myCamera.setDisplayOrientation(...

134

前端解决ios手机竖拍上传图片旋转90° 完美适配:Android/ios/Windows

前端解决ios手机竖拍上传图片旋转90° 完美适配:Android/ios/Windows下面是我在最近开发中,遇到的实际问题。 万恶的ios相机,不管是前摄还是后摄,拍出来上传到网页上怎么就。。就见了鬼了(我这里说的是用Ajax和后台对接时传给后台计算的图片)。这个原因就是因为用ios手机拍照,系统会给图片加上一个方向的属性, ios相机默认的拍照方向是后摄Home键在右为正,前摄Home键在左为

Rachel_ruiqiu的博客 5772

三星手机拍照强制切换到横屏及照片旋转问题

最近在做项目,项目里面有拍照上传的功能,无非就是吊起系统拍照功能,然后获取所拍照的地址,然后上传即可。但是当我无意间拿了一部三星手机装了App之后,当使用拍照功能的时候,拍完之后,界面并没有出现所拍的照片,之后才知道是三星手机在拍照的时候会强制切换到横屏,导致生命周期重走了,所以拍出来的照片所保存的地址也跟着没有了,然后我在清单文件中配置了该Activity的android:configChang

cj_286的博客 4884

webview img照片旋转_前端上传图片被旋转的处理方案

需求背景用户需要上传图片,然后前端将这张图片绘制到canvas画布上,然后生成base64展示给用户,这里需要其他操作,所以需要使用canvas,而不是直接用fileReader。出现的问题在电脑上,我们进行代码编写的时候,在chrome上进行调试的时候没有问题,但是一旦在手机上测试就发现图片进行了旋转,不同的拍摄角度图片旋转的角度也不一样,如横拍,竖拍,倒着拍。具体代码如下:具体表现为,这是我们...

weixin_39793708的博客 678
上一篇: React Native 工程初始化过慢解决办法+运行时产生的问题解决方案
下一篇: View的事件分发机制——预备篇
丸子哒哒哒
博客等级 码龄12年 31粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值