在做人脸识别的时候发现很多手机拍摄的图像在C#读取之后方向出现了错误,Bitmap中的宽度和实际的windows的文件属性内的参数相反,引起一阵测试和思考,后来百度出来可以用Exif来解决

github有相关Exif介绍

https://github.com/dlemstra/Magick.NET/blob/784e23b1f5c824fc03d4b95d3387b3efe1ed510b/Magick.NET/Core/Profiles/Exif/ExifTag.cs

维基百科也有说明

https://en.wikipedia.org/wiki/Exif

实际代码是

/// <summary>
/// 根据图片exif调整方向
/// </summary>
/// <param name="sm"></param>
/// <returns></returns>
public static Bitmap RotateImage(Stream sm)
{
Image img = Image.FromStream(sm);
var exif = img.PropertyItems;
byte orien = ;
var item = exif.Where(m => m.Id == ).ToArray();
            if (item.Length > )
                orien = item[].Value[];
            switch (orien)
{
case :
img.RotateFlip(RotateFlipType.RotateNoneFlipX);//horizontal flip
break;
case :
img.RotateFlip(RotateFlipType.Rotate180FlipNone);//right-top
break;
case :
img.RotateFlip(RotateFlipType.RotateNoneFlipY);//vertical flip
break;
case :
img.RotateFlip(RotateFlipType.Rotate90FlipX);
break;
case :
img.RotateFlip(RotateFlipType.Rotate90FlipNone);//right-top
break;
case :
img.RotateFlip(RotateFlipType.Rotate270FlipX);
break;
case :
img.RotateFlip(RotateFlipType.Rotate270FlipNone);//left-bottom
break;
default:
break;
}
return (Bitmap)img;
}

最新文章

  1. wxWidgets
  2. Html命名锚
  3. android开机过程简单描述
  4. MATLAB常用操作
  5. lucene-查询query-&gt;FuzzyQuery相近词语的搜索
  6. 我所了解的WEB开发(3) - 彩虹的颜色
  7. javascript --- Ajax基础
  8. Knockout Grid - Loading Remote Data
  9. 160901、在大型项目中组织CSS
  10. Hibernate各种主键生成策略与配置详解【附1--&lt;generator class=&quot;foreign&quot;&gt;】
  11. delphi高手突破学习笔记之面向对象类和对象的本质
  12. Android SurfaceView实战 打造抽奖转盘
  13. [04] Object类
  14. C++ 非常量引用无效
  15. ListView 控件和 INotifyPropertyChanged 接口
  16. C# 中的await
  17. (转)Ubuntu12.04上NFS Server安装使用过程
  18. U3D优化
  19. Java的Statement、PreparedStatement、PreparedStatement + 批处理 的区别
  20. Java虚拟机内存模型和volatile型变量

热门文章

  1. 如何用FFmpeg API采集摄像头视频和麦克风音频,并实现录制文件的功能
  2. zufeoj 花生(The Peanuts)
  3. 圆周率的现代计算机求法(C语言) Lebal:research
  4. python开发面向对象基础:人狗大战学面向对象
  5. PCB上 如何显示 汉字
  6. PLSQL Developer备份恢复oracle数据
  7. mysql库操作
  8. C语言中字符数据的输入和输出
  9. python&#39;s thirty-first day for me re模块
  10. maven 安装 过程