关于html5 img图片自动翻转,关于HTML5显示图片翻转90度的问题

这个问题是一直困扰着我,一张图片,用图片浏览器打开始终是竖图,但是查看属性,却发现宽大于高,也就是在属性中这是个横图。这样导致客户端用该宽高来展示图片会出现问题。

今天查了一下资料,原来是因为相机给图片的exif信息加上了一个Orientation,然后图片浏览器会对这个属性做出兼容,让图片以竖图的形式显示出来。

具体我是参考https://www.cnblogs.com/csonezp/p/5564809.html的

还有https://www.jianshu.com/p/442b5ad217b8。

首先要获取图片的Orientation,用exif.js,下载地址http://code.ciaoca.com/javascript/exif-js/,下载完成后引入

20180312201450389075.png

在调用这块会有需要注意的地方,获取图片对象依靠官方文档的写法直接根据img标签对象就可以获取但是lz本人前期获取不正常,所以就新建了image的对象去获取。

var imageObj=new Image();

imageObj.src=‘图片地址(可以是url,也可以是本地file)‘;

通过监听onload方法,执行exif的getdata方法:

imageObj.οnlοad=function(){

EXIF.getData(imageObj,function(){})

}

这里我用的是lightbox.js框架查看图片,很方便,网上可以查到.

然后要修改lightbox.js的源码,lightbox.js的源码里面已经声明了一个img,所以用现成的,

20180312201450681078.png

然后在preloader.onload函数里,根据获得的Orientation来旋转承载图片的容器,怎么方便怎么来,

20180312201450954526.png

然后完美解决。

很开心,又解决了一个bug......

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这不是一个问题,而是一个要求,我会尽力回答你的需求。对于HTML5图片自动翻转特效,可以使用CSS3的transform属性来实现。具体实现方法可以参考以下代码: ```html <div class="flip-container"> <div class="flipper"> <div class="front"> <img src="image.jpg" alt="Image"> </div> <div class="back"> <img src="image.jpg" alt="Image"> </div> </div> </div> ``` ```css .flip-container { perspective: 1000px; position: relative; } .flipper { position: absolute; width: 100%; height: 100%; transition: transform 0.6s; transform-style: preserve-3d; } .flipper:hover { transform: rotateY(180deg); } .front, .back { position: absolute; width: 100%; height: 100%; backface-visibility: hidden; } .back { transform: rotateY(180deg); } ``` 对于CSS3带动态阴影效果的3D图片翻转特效,可以使用以下代码实现: ```html <div class="flip-container"> <div class="flipper"> <div class="front"> <img src="image.jpg" alt="Image"> </div> <div class="back"> <img src="image.jpg" alt="Image"> </div> </div> </div> ``` ```css .flip-container { perspective: 1000px; position: relative; } .flipper { position: absolute; width: 100%; height: 100%; transition: transform 0.6s; transform-style: preserve-3d; box-shadow: 0 0 20px rgba(0, 0, 0, 0.5); } .flipper:hover { transform: rotateY(180deg); } .front, .back { position: absolute; width: 100%; height: 100%; backface-visibility: hidden; } .back { transform: rotateY(180deg); } ``` 希望这些代码可以帮助到你,如果有任何问题,可以继续问我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值