部分Android或IOS手机拍照后照片被旋转的问题

1、我们平时手机拍的照片,传到电脑后,使用Photoshop或者其它图片浏览工具打开时,发现图片是被转过的。可是Windows上预览却是正的。其实原因是部分Android或IOS手机拍照后,将图片角度信息存到了Exif信息中。我们只需要读取出来,再做相应的重绘,即可。

2、代码送上。

   class ImageNormal
    {

        public void NormalImageDegree(string imagePath)
        {
            var bitmap = (Bitmap)Bitmap.FromFile(imagePath);
            var exif = bitmap.GetExif();
            if (exif.Orientation == ExifNET.Models.Types.Orientation.Normal) return;
            Bitmap newBitmap = null;
            switch (exif.Orientation)
            {
                case ExifNET.Models.Types.Orientation.Rotate90:
                    newBitmap = rotateImage(bitmap, -90);
                    break;
                case ExifNET.Models.Types.Orientation.Rotate270:
                    newBitmap = rotateImage(bitmap, -270);
                    break;
                case ExifNET.Models.Types.Orientation.Rotate180:
                    newBitmap = rotateImage(bitmap, -180);
                    break;
                default:
                    break;
            }
            bitmap.Dispose();
            if (newBitmap != null)
            {
                newBitmap.Save(imagePath, System.Drawing.Imaging.ImageFormat.Jpeg);
                newBitmap.Dispose();
            }
        }
        private Bitmap rotateImage(Bitmap b, float angle)
        {
            angle = angle % 360;
            //弧度转换
            double radian = angle * Math.PI / 180.0;
            double cos = Math.Cos(radian);
            double sin = Math.Sin(radian);
            //原图的宽和高
            int w = b.Width;
            int h = b.Height;
            int W = (int)(Math.Max(Math.Abs(w * cos - h * sin), Math.Abs(w * cos + h * sin)));
            int H = (int)(Math.Max(Math.Abs(w * sin - h * cos), Math.Abs(w * sin + h * cos)));
            //目标位图
            Bitmap dsImage = new Bitmap(W, H);
            System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(dsImage);
            g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Bilinear;
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
            //计算偏移量
            Point Offset = new Point((W - w) / 2, (H - h) / 2);
            //构造图像显示区域:让图像的中心与窗口的中心点一致
            Rectangle rect = new Rectangle(Offset.X, Offset.Y, w, h);
            Point center = new Point(rect.X + rect.Width / 2, rect.Y + rect.Height / 2);
            g.TranslateTransform(center.X, center.Y);
            g.RotateTransform(360 - angle);
            //恢复图像在水平和垂直方向的平移
            g.TranslateTransform(-center.X, -center.Y);
            g.DrawImage(b, rect);
            //重至绘图的所有变换
            g.ResetTransform();
            g.Save();
            g.Dispose();
            //dsImage.Save("yuancd.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
            return dsImage;
        }

    }

 

转载于:https://www.cnblogs.com/songxingzhu/p/5996217.html

前端解决手机拍照旋转问题及图片压缩上传 1.依赖 jquery.js 2.html部分 <input class="addImage" name="loadFile" type="file" accept="image/*" capture="camera"> //capture="camera" 设置手机端打开上传文件时使用手机摄像头拍照上传,不写则默认拍照相册 3.js部分 //input上传图片 ... 阅读详情

相关推荐

告别照片旋转!UniApp Camera组件横竖屏适配保姆级教程(含iOS/Android差异处理)

本文详细解析了UniApp Camera组件在横竖屏适配中的常见问题,提供了从基础配置到高级EXIF处理的完整解决方案。特别针对iOSAndroid平台的差异,给出了具体的代码实现和性能优化建议,帮助开发者彻底解决照片旋转问题,提升用户体验。

weixin_33552698的博客 273

android 读取的图片旋转90度_iOS中关于图片方向的处理

iOS中关于图片方向的处理问题在使用即刻app的时候,发现在iOS14上,点击图片查看大图的时候会出现图片显示方向不正确的情况。刚好之前做过这块,现在来分析一下出现这种情况的可能原因以及解决方案。这个问题在上传图片者直接webview展示的时候会出现。分析不同的拍照设备(iOSAndroid相机),拍照的时候是有一个设备方向的,和相机的厂商有关。当我们按下快门的时候,图片会自带一个方向信息。...

weixin_42662171的博客 381

android 点击图片旋转90度,iphone上传拍照图片时图片会旋转90度,从相册选择就不会,安卓手机也不会,怎么解决?...

之前也遇到过这个问题,到stackoverflow上搜到了这个答案(IE10+):function getOrientation(file, callback) {var reader = new FileReader();reader.onload = function(e) {var view = new DataView(e.target.result);if (view.getUint16...

weixin_39640767的博客 160

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

问题场景: 1.iOS系统的苹果手机竖屏拍照者从相册选择竖屏情况下拍的照片上传到tfs服务器安卓手机下载展示的时候是旋转了90°的图片,但是苹果手机展示没有问题.         我去网上进行原因的查找,发现iphone默认横屏拍照才是正确的方向,所以竖屏拍照会携带逆时针旋转90°的信息. 经过多番验证,苹果手机竖屏拍照上传的时候,是存在逆时针旋转90°的标识的,上传到服务器之后返回链接 ...

Android_Glimmer的博客 9170

解决安卓机拍照照片显示自动旋转90度问题

苹果手机拍照无异常,安卓手机拍照照片照片显示时会自动旋转90度显示

shushukaka的博客 4424

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

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

ximenxiafeng的专栏 1713

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

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

sinat_26432415的博客 2726

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

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!

2401_84094979的博客 2244

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

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

weixin_34087307的博客 1258

手机拍照上传图片旋转角度问题

解决上传图片自动旋转问题 苹果手机部分安卓手机上传图片时会发生旋转,解决问题的思路是:先获取旋转角度,再对图片旋转进行修正 1、获取旋转角度 旋转角度 参数 0度 1 顺时针90度 6 逆时针90度 8 180度 3 方式一、exif可以获取图片的信息可利用exif获取旋转角度,地址:http://code.ciaoca.com/javascript/exif-js/此方式会有偶尔获取不到图片信息的bug, EXIF.getData(document.getElementB

xuanyuyao的博客 1462

解决ios上传图片被旋转问题

利用exif.js插件解决ios手机上传竖拍照旋转90度问题 移动手机拍照时,发现ios手机上传竖拍图片会逆时针旋转90度,横拍照片无此问题部分安卓手机存在此问题。 解决思路: 获取到照片拍摄的方向角,对非横排的ios照片进行角度旋转修正。 我们可以通过exif.js这个插件获取到它的拍照方向Orientation属性,然后把所有的旋转了的图片都给正过来。 exif.js介绍: Exif.js 提供了 JavaScript 读取图像的原始数据的功能扩展,例如:拍照方向、相机设备型号、拍摄时

weixin_55869781的博客 2495

移动部分安卓手机(三星,小米)竖拍上传图片预览的时候发生旋转问题

移动端web 页面通过 input type= file 拍照的时候,部分手机图片出现量旋转了90度的问题,出现问题的机型为小米和三星,手机竖着拍的时候出现这种旋转问题,横拍出来的照片是正常的,结合网上的解决办法总结如下: 主要是用 Orientation 这个参数 这个参数并不是所有的图片都有,不过通过手机拍出来的图片都是带有这个参数的, 旋转角度 参数值 0 ...

weixin_30718391的博客 1059

解决部分安卓手机上拍出的照片被自动旋转问题

问题:在做钉钉微应用的时候上传人脸照片时图片发生的旋转,在ios机上没有任何问题部分安卓机拍照好处有一个自动旋转的过程。 首先我们借助exif-js可以实现相机镜头的读取,不支持IE10以下,可以直接引用的js文件,也可以使用npm安装依赖 npm install exif-js --save import EXIFfrom 'exif-js'; /index.html引入js <script src="https://cdn.jsdelivr.net/npm/exif-js"><

weixin_45685544的博客 1865

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

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

weixin_39793708的博客 678

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

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

Rachel_ruiqiu的博客 5767

手机 调用相机/相册 旋转压缩 上传

安装exif-js.js ios部分安卓机拍照后会有旋转,利用exif获取旋转角度 npm install exif-js --save orientation值 旋转角度 1 0度 3 180度 6 顺时针90度 8 逆时针90度 下面是例子:(vue) 显示效果: <template> <d...

LXY的博客 251

关闭裁剪功能_iOS 13 照片编辑功能太强大,要逼死大批修图软件

它不算什么新功能,甚至没有像「提醒事项」一样重新设计,但对体验的提升却是巨大的。使用 iOS 13 一周之后,深色模式给我带来的新鲜感已经逐渐消失。当我把手机切换回浅色外观,新系统的存在感也跟着降低。我终于有机会把 iOS 13 当成一个普通的系统,把 iPhone 当成一个普通的手机来体验。没有了深色模式的视觉冲击,iOS 13 还留下什么让人惊喜的地方?如果让我来选择 iOS 13 上最喜欢的...

weixin_39731623的博客 902
上一篇: Windows平台查看端口占用的程序
下一篇: C# Directory.GetFiles()获取多个类型格式的文件
a616735104
博客等级 码龄12年 15粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值