更新 : 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 有罢了.

图片方向 image orientation Exif的更多相关文章

  1. 使用WebUploader使用,及使用后测试横拍或竖拍图片图片方向不对等解决方案

    WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件.在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流IE浏览 ...

  2. Java读取图片exif信息实现图片方向自动纠正

    起因 一个对试卷进行OCR识别需求,需要实现一个功能,一个章节下的题目图片需要上下拼接合成一张大图,起初写了一个工具实现图片的合并,程序一直很稳定的运行着,有一反馈合成的图片方向不对,起初怀疑是本身图 ...

  3. 修正ios h5上传图时的图片方向问题

     .ios上传会在exif中带一个 Orientation的属性,这个属性在windows中不会生效,在ios浏览器中会生效,造成图片在windows资源管理器中与ios浏览器中方向不一致  为了用户 ...

  4. 前端手势控制图片插件书写四(图片上传及Ios图片方向问题)

    1.在图片上传中,使用的input的type为File的属性.使用filereader的Api let that = this; var file = document.getElementById( ...

  5. 修正iOS从照相机和相册中获取的图片 方向

    修正iOS从照相机和相册中获取的图片 方向   修正iOS从照相机和相册中获取的图片 方向 使用系统相机拍照得到的图片的默认方向有时不是ImageOrientationDown,而是ImageOrie ...

  6. iOS 上传的图片在HTML上显示时,图片方向信息(EXIF Orientation)异常

    将iPhone 6s拍摄的照片上传到服务器之后, 在Web网页上看到图片被逆时针旋转了90度, 这让我很惆怅呐! 出现这个问题其实是因为上传的图片为.jpg格式,.jpg文件含有EXIF信息, 其中E ...

  7. 在web中如何调整上传过的图片方向 (exif)

    前提: 相机中拍的照片放到web上不会自动识别方向,如有些竖向显示的照片放到web上横向显示.这些照片在windows上是正确显示的.但是web不会自动旋转照片到正确方向.下面我们通过两种方法来实现这 ...

  8. 修正iOS从照相机和相册中获取的图片方向(转)

    - (UIImage *)fixOrientation { // No-op if the orientation is already correct if (self.imageOrientati ...

  9. 修正iOS从照相机和相册中获取的图片方向

    使用系统相机拍照得到的图片的默认方向有时不是ImageOrientationDown,而是ImageOrientationLeft,在使用的时候会出现图片顺时针偏转90°.使用fixOrientati ...

随机推荐

  1. 论文阅读笔记 Improved Word Representation Learning with Sememes

    论文阅读笔记 Improved Word Representation Learning with Sememes 一句话概括本文工作 使用词汇资源--知网--来提升词嵌入的表征能力,并提出了三种基于 ...

  2. 06: mysql索引查找原理及调优

    MySQL其他篇 目录: 1.1 常见查找方法举例 1.2 索引数据结构设相关的计算机原理 1.3 MyISAM实现索引 1.4 InnoDB索引实现 1.5 索引使用策略 1.1 常见查找方法举例返 ...

  3. mysql 中语句执行的顺序以及查询处理阶段的分析

    原文链接:http://www.php.cn/mysql-tutorials-408865.html 本篇文章给大家带来的内容是关于mysql中语句执行的顺序以及查询处理阶段的分析,有一定的参考价值, ...

  4. tar 压缩指令基本用法

    压缩:tar -cjvf aaa.tar.bz2  www.test.com/  --exclude *.log(-j是用bz2压缩,-exclude是排除.log后缀的文件) c-创建 j-bzip ...

  5. git使用操作

    git config --system --unset credential.helper 重置git

  6. POJ 2018 Best Cow Fences(二分最大区间平均数)题解

    题意:给出长度>=f的最大连续区间平均数 思路:二分这个平均数,然后O(n)判断是否可行,再调整l,r.判断方法是,先求出每个数对这个平均数的贡献,再求出长度>=f的最大贡献的区间,如果这 ...

  7. 【Spring Security】四、自定义页面

    在前面例子中,登陆页面都是用的Spring Security自己提供的,这明显不符合实际开发场景,同时也没有退出和注销按钮,因此在每次测试的时候都要通过关闭浏览器来注销达到清除session的效果. ...

  8. 【第十七章】 springboot + devtools(热部署)

    技术介绍 devtools:是boot的一个热部署工具,当我们修改了classpath下的文件(包括类文件.属性文件.页面等)时,会重新启动应用(由于其采用的双类加载器机制,这个启动会非常快,如果发现 ...

  9. P3273 [SCOI2011]棘手的操作

    吐槽 上午风浔凌julao问我的神题 操作又多又毒瘤又棘手... 然后bzoj题号正好是2333,2333333333 思路 貌似只有我是这么写的 线段树合并, 每个线段树存每个连通块的信息,维护点的 ...

  10. HDFS 的垃圾回收配置

    HDFS的垃圾回收  的默认配置的 0,也就是说,如果你不小心误删除了某样东西,那么这个操作是不可恢复的. 但是如果配置了HDFS的垃圾回收机制,那么删除的东西就可以在垃圾箱中保存一段你配置的时间,等 ...