C# 根据图片的EXIF自动调整图片方向

这篇具有很好参考价值的文章主要介绍了C# 根据图片的EXIF自动调整图片方向。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

PropertyItems

代码

什么是 EXIF

EXIF Orientation


PropertyItems

C# 根据图片的EXIF自动调整图片方向,C#,c#

代码

        /// <summary>
        /// 根据图片exif调整方向
        /// </summary>
        /// <param name="img"></param>
        public void RotateImage(Bitmap img)
        {
            var exif = img.PropertyItems;
            byte orien = 0;
            var item = exif.Where(m => m.Id == 274).ToArray();
            if (item.Length > 0)
                orien = item[0].Value[0];
            switch (orien)
            {
                case 2:
                    img.RotateFlip(RotateFlipType.RotateNoneFlipX);//horizontal flip
                    break;
                case 3:
                    img.RotateFlip(RotateFlipType.Rotate180FlipNone);//right-top
                    break;
                case 4:
                    img.RotateFlip(RotateFlipType.RotateNoneFlipY);//vertical flip
                    break;
                case 5:
                    img.RotateFlip(RotateFlipType.Rotate90FlipX);
                    break;
                case 6:
                    img.RotateFlip(RotateFlipType.Rotate90FlipNone);//right-top
                    break;
                case 7:
                    img.RotateFlip(RotateFlipType.Rotate270FlipX);
                    break;
                case 8:
                    img.RotateFlip(RotateFlipType.Rotate270FlipNone);//left-bottom
                    break;
                default:
                    break;
            }
        }

什么是 EXIF

        Exif是英文Exchangeable Image File(可交换图像文件)的缩写,最初由日本电子工业发展协会(JEIDA --Japan Electronic Industry Development Association) 制订,目前的最新版本是发表于2002年04月的2.21 版。国际标准化组织(ISO)正在制订的相机文件设计标准(DCF -- Design role for Camera File system)可能以Exif2.1为基础。

        Exif 文件实际是JPEG文件的一种,遵从JPEG标准,只是在文件头信息中增加了有关拍摄信息的内容和索引图。所以你可以使用任何支持JPEG格式的图像工具软件观看或修改Exif文件,但,打开时可能看不到Exif信息,一旦修改,Exif信息可能丢失。

        所有的JPEG文件以字符串“0xFFD8”开头,并以字符串“0xFFD9”结束。文件头中有一系列“0xFF??”格式的字符串,称为“标识”,用来标记JPEG文件的信息段。“0xFFD8”表示图像信息开始,“0xFFD9”表示图像信息结束,这两个标识后面没有信息,而其它标识紧跟一些信息字符。

        0xFFE0 -- 0xFFEF之间的标识符称为“应用标记”,没有被常规JPEG文件利用,Exif正是利用这些信息串记录拍摄信息如快门速度、光圈值等,甚至可以包括全球定位信息。其中拍摄方向的ID为“0x0112”,有1至8共8种值。

EXIF Orientation

Orientation 
The image orientation viewed in terms of rows and columns. 
Tag = 274 (112.H) 
Type = SHORT 
Count = 1 
Default = 1 
1 = The 0th row is at the visual top of the image, and the 0th column is the visual left-hand side. 
2 = The 0th row is at the visual top of the image, and the 0th column is the visual right-hand side. 
3 = The 0th row is at the visual bottom of the image, and the 0th column is the visual right-hand side. 
4 = The 0th row is at the visual bottom of the image, and the 0th column is the visual left-hand side. 
5 = The 0th row is the visual left-hand side of the image, and the 0th column is the visual top. 
6 = The 0th row is the visual right-hand side of the image, and the 0th column is the visual top. 
7 = The 0th row is the visual right-hand side of the image, and the 0th column is the visual bottom. 
8 = The 0th row is the visual left-hand side of the image, and the 0th column is the visual bottom. 
Other = reserved文章来源地址https://www.toymoban.com/news/detail-622651.html

到了这里,关于C# 根据图片的EXIF自动调整图片方向的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【移动端网页布局】流式布局 ① ( 流式布局简介 | 百分比布局 / 非固定像素布局 | 根据屏幕尺寸 / 设备类型自动调整网页布局 )

    流式布局 又称为 百分比布局 / 非固定像素布局 ; 为 流式布局 中 盒子模型 设置 百分比宽度 , 其大小可以根据屏幕宽度自适应伸缩 , 该盒子没有像素限制 , 内容自动向左右两边填充 ; 流式布局 可以 根据 设备屏幕尺寸 和 设备类型 自动调整 网页布局 和 标签元素大小 , 以适应

    2024年02月03日
    浏览(16)
  • C# CefSharp 根据输入日期段自动选择日期

    搞这个Demo整整搞几天通宵,爆肝了。后做的效果出来,还是不错的。给小伙伴看看效果图。 日期之间相差多少个月数。开始时间框点击对应月份要点击多少次,结束时间框点击对应月份要点击多少次 Xpath获取问题。找到对应html元素包含那个元素,比如 querySelectorAll(\\\'td[class

    2024年01月23日
    浏览(13)
  • 关于element ui select,date-picker添加:popper-append-to-body=“false“后,下拉框下拉方向不会自动调整的问题

    element ui select,date-picker添加 :popper-append-to-body=\\\"false\\\" 后,下拉框下拉方向不会自动调整; 比如说select的位置处于页面最下方时,不加 popper-append-to-body=\\\"false\\\" 下拉框会自动向上展开,但是加上 popper-append-to-body=\\\"false\\\" 后下拉框就不会自动向上展开,依然保持默认的向下展开,将

    2024年02月15日
    浏览(18)
  • 两个显示屏之间鼠标移动方向调整

    目录 1 多屏幕左右顺序调整  2 屏幕缩放比例调整 简单说明一下 鼠标右键桌面-显示设置 或者:系统-屏幕 就是鼠标左键按下、选中一个序号,拖动鼠标即可调整位置。  

    2024年02月11日
    浏览(23)
  • Android 获取屏幕方向,根据屏幕旋转角度判断屏幕实际方向

    在使用 getResources().getConfiguration().orientation 获取屏幕方向时,可能会遇到不准确的问题。 这是因为该方法返回的是设备的自然方向,而不是屏幕的实际方向。 在某些情况下,设备的自然方向可能与屏幕的实际方向不同。例如,如果设备是横向放置的,但屏幕是纵向显示的,那

    2024年02月03日
    浏览(18)
  • 【unity】代码控制文本框根据字数实时调整大小

    最近想要实现游戏中对话文本框根据字数实时调整大小的功能,在网上没找到合适的教程,故自己简单地实现了一下,在这里分享一下自己的思路。 创建UI画布,设置为根据屏幕大小缩放。 添加一个面板(图中灰色部分),在面板中再添加一个文本框,调整他们的位置和大小

    2024年02月11日
    浏览(16)
  • PyQt5:窗口大小根据屏幕大小自适应调整

     

    2024年02月12日
    浏览(15)
  • 【Qt】根据界面所在显示器自适应调整ui大小

    使用QDesktopWidget、QApplication::screens()等获取屏幕宽高、DPI等信息,详见上一篇概述。 我们需要将窗口、布局和控件的大小类型(size type)设置为相对单位,如: 设置窗口的尺寸策略为Qt::SizePolicy::Expanding 使用setBaseSize() + setSizeIncrement() 使窗口大小可根据屏幕比例增长 使用 percentages 而

    2023年04月26日
    浏览(17)
  • Unity 根据所给方向计算Pitch、Yaw、Roll角的大小

    Pitch、Yaw、Roll角的概念 Pitch角,也叫俯仰角,用于描述物体绕x轴旋转的旋转角度。对应相机的上下旋转。 float pitch = Mathf.Atan2(direction.y, direction.z) * Mathf.Rad2Deg; Yaw角,也叫航向角,用于描述物体绕y轴旋转的旋转角度。对应相机的水平旋转。 float yaw = Mathf.Atan2(direction.x, directi

    2024年02月14日
    浏览(13)
  • 【Unity】摄像机跟随鼠标移动以物体为中心旋转 物体根据视线方向移动

    描述 实现摄像机根据鼠标移动跟随物体旋转,以摄像机前物体为中心,摄像机围绕物体旋转,并使摄像机时刻指向物体 实现效果 Unity 组件设置 Camera 组件设置 Body 组件设置 实现代码 CameraRotateMove.cs 摄像机跟随和旋转 move_better.cs 物体根据按键移动

    2024年02月08日
    浏览(20)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包