博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
图片方向 image orientation Exif
阅读量:6076 次
发布时间:2019-06-20

本文共 1555 字,大约阅读时间需要 5 分钟。

更新 : 2019-01-02  

refer

https://stackoverflow.com/questions/3129099/how-to-flip-images-horizontally-with-html5 (使用 canvas 做 flip)

https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/scale

之前没有说到关于 flip 的概念

当我们用手机自拍时, 屏幕中我们看见的是镜子中的自己,并不是别人眼中的自己哦.

那拍出来的图片也会有这个 exif information 

按理说我们在拍摄时屏幕出现的结果就应该是最终图像的结果,但是自拍 = 镜子中的你,显然有点怪,自己看不起怪,别人看就怪怪的

所以一般上遇到这类的图片我们需要 flip, 反向回去.

上面 2 个 refer 是说 canvas 如果做到这个效果,  在 crop 图的时候可以用上. 

asp.net core 用 Magick.NET 这个库,里头也是有 .flip() 这个功能.

注 :不同手机对图片的处理是不同的 

比如 iphone 自拍是没有 2,4,5,7 的,iphone 会先 flip 然后在 rotate 然后修改掉 exif, 比如你自拍 2, iphone 输出的图片是 3 (很奇怪为什么不弄成 1 呢 ?)

华为则是直接 flip rotate 美美然后把 exif orientation 删除

小米很奇葩, 它虽然和华为一样, rotate 美美然后 exif 干掉 但是它不会 flip.... 所以自拍出来的图片是镜子中的人...

 

 

 

https://stackoverflow.com/questions/20600800/js-client-side-exif-orientation-rotate-and-mirror-jpeg-images

https://foobuzz.github.io/

https://www.thoughtco.com/why-is-my-picture-turned-sideways-1701398

http://cloudinary.com/blog/top_10_mistakes_in_handling_website_images_and_how_to_solve_them

 

市场上大部分的相机,手机拍摄出来的图片都是横的. 不管你怎么旋转你的手机, 最终的图片一定是横的. 

但是呢, 手机会提供一个叫 Exif 的资料, 里头有表面你在拍摄时的手机方向. 

这是标准方向 

这是 90 度的方向 

所有的图片展示软件都依据图片和旋转信息 Exif 来呈现图片最终的样子. 

如果一张图的 Exif 丢失了, 或被串改了, 就有可能导致展示的结果出错. 这就是你经常会看见图片颠倒的原因.

然而当前的游览器在展示图片时, 都不参考 Exif 信息, 目前只有 IOS safari 会处理. 所以这种颠倒的画面在游览器更常见. 

那么我们该i怎么处理呢? 

如果网页的图片都是通过网页 upload 的,那么在 upload 的时候我们需要把带有 exif 信息的图片转换成没有 exif 的图片 ( 这里需要旋转到正确方向 )

exif.js 可以获取到图片信息, 然后通过 canvas 我们可以轻易的重绘一张图(要旋转到对的方向哦). 之后我们就可以把信息丢掉了.

注 :png 是没有 exif 的哦, 好像是只有 jpg jpeg 有罢了.

 

转载于:https://www.cnblogs.com/keatkeat/p/7532183.html

你可能感兴趣的文章
.NET[C#]中NullReferenceException(未将对象引用到实例)是什么问题?如何修复处理?...
查看>>
边缘控制平面Ambassador全解读
查看>>
Windows Phone 7 利用计时器DispatcherTimer创建时钟
查看>>
程序员最喜爱的12个Android应用开发框架二(转)
查看>>
vim学习与理解
查看>>
DIRECTSHOW在VS2005中PVOID64问题和配置问题
查看>>
MapReduce的模式,算法以及用例
查看>>
《Advanced Linux Programming》读书笔记(1)
查看>>
zabbix agent item
查看>>
一步一步学习SignalR进行实时通信_7_非代理
查看>>
AOL重组为两大业务部门 全球裁员500人
查看>>
字符设备与块设备的区别
查看>>
为什么我弃用GNOME转向KDE(2)
查看>>
Redis学习记录初篇
查看>>
爬虫案例若干-爬取CSDN博文,糗事百科段子以及淘宝的图片
查看>>
Web实时通信技术
查看>>
第三章 计算机及服务器硬件组成结合企业运维场景 总结
查看>>
IntelliJ IDEA解决Tomcal启动报错
查看>>
默认虚拟主机设置
查看>>
七周五次课(1月26日)
查看>>