Javascript实现图片加载从模糊到清晰显示的方法


Posted in Javascript onJune 21, 2016

1.背景介绍

在网络相册应用中用户查看照片是最朴素的需求,当网络比较慢的时候查看照片等待的时间是比较长的,用户体验会很差。

2.现状

现在加载照片的方法主要有一下两种:
(1)最原始的方式在html页面直接用img标签加载显示照片。该方法在网络速度比较慢或者要显示的照片比较大的时候会页面出现空白的等待过程,并且不能开始给用户看到照片大概的情况,用户体验比较不好
(2)在html页面先用img标签加载显示照片的缩略图,同时用javascript隐藏的加载照片的原图,等照片大图加载完成后再将原图显示到页面中。以下是流程图:

Javascript实现图片加载从模糊到清晰显示的方法

3.我们的解决方案

QQ相册最近做的一些优化方法解决了上诉两个方法的缺点和满足了用户查看照片的需求:第一时间看到照片大概情况和尽可能快的看到清晰的原图。该方法使用缩略图和原图同时加载并叠加显示,先加载缩略图并拉大显示,大图叠加在缩略图上面同时加载。缩略图很小通常很快就能给用户看到照片模糊的效果,大图加载过程中从上往下逐步覆盖缩略图,这样用户就可以看到加载过程中的大图。

(1)示例图

Javascript实现图片加载从模糊到清晰显示的方法

如上如所示,本方法的处理步骤是:
1).获取照片缩略图和原图的URL,获取照片的长和宽;
2).加载并显示照片缩略图,将缩略图按照片的长和宽拉伸显示,这时用户看到的是模糊的效果;
3).加载并显示照片原图,将原图叠加在缩略图上面显示,原图加载多少就显示多少,没有加载的还是显示缩略图,逐步将缩略图覆盖掉,原图在加载的过程中用户看到的是照片从模糊到清晰的渐变效果。
4).原图加载完后,原图已经全部将缩略图覆盖,这时用户看到的是真实的原图。此时可以隐藏缩略图防止缩略图干扰PNG或GIF等有透明效果的图片显示。

(2)示例代码

<!--设置照片的大小-->
<div style="width:400px;height:300px;">
    <!--小图拉大显示-->
    <img src="small_url" style="width:100%;height:100%;"/>
    <!--原图叠加在小图上面-->
    <img src="big_url" style="width:100%;height:100%;position:absolute;top:0px;left:0px;"/>
</div>

以上就是本文的全部内容,了解更多JavaScript的语法,大家可以查看:《JavaScript 参考教程》、《JavaScript代码风格指南》,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery一般方法介绍 入门参考
Jun 21 Javascript
javascript解决innerText浏览器兼容问题思路代码
May 17 Javascript
js关于精确计算和数值格式化以及直接引js文件
Jan 28 Javascript
基于javascript代码实现通过点击图片显示原图片
Nov 29 Javascript
js遮罩效果制作弹出注册界面效果
Jan 25 Javascript
Vue.js实现可配置的登录表单代码详解
Mar 29 Javascript
Vue数据双向绑定原理及简单实现方法
May 18 Javascript
讲解vue-router之什么是嵌套路由
May 28 Javascript
React组件重构之嵌套+继承及高阶组件详解
Jul 19 Javascript
laydate时间日历插件使用方法详解
Nov 14 Javascript
JavaScript展开操作符(Spread operator)详解
Jul 20 Javascript
微信小程序canvas开发水果老虎机的思路详解
Feb 07 Javascript
Javascript类型系统之String字符串类型详解
Jun 21 #Javascript
JS模仿腾讯图片站的图片翻页按钮效果完整实例
Jun 21 #Javascript
JS实现简单的右下角弹出提示窗口完整实例
Jun 21 #Javascript
jQuery获取元素父节点的方法
Jun 21 #Javascript
JS图片定时翻滚效果实现方法
Jun 21 #Javascript
Javascript删除指定元素节点的方法
Jun 21 #Javascript
jQuery插件扩展测试实例
Jun 21 #Javascript
You might like
PHP循环结构实例讲解
2014/02/10 PHP
PHP实现CSV文件的导入和导出类
2015/03/24 PHP
PHP实现动态创建XML文档的方法
2018/03/30 PHP
Javascript 获取链接(url)参数的方法[正则与截取字符串]
2010/02/09 Javascript
Chrome扩展页面动态绑定JS事件提示错误
2014/02/11 Javascript
浅谈jquery中next与siblings的区别
2016/10/27 Javascript
JavaScript实现定时页面跳转功能示例
2017/02/14 Javascript
React Form组件的实现封装杂谈
2018/05/07 Javascript
JS实现的汉字与Unicode码相互转化功能分析
2018/05/25 Javascript
监听angularJs列表数据是否渲染完毕的方法示例
2018/11/07 Javascript
vue.js引入外部CSS样式和外部JS文件的方法
2019/01/06 Javascript
详解bootstrap-fileinput文件上传控件的亲身实践
2019/03/21 Javascript
node 标准输入流和输出流代码实例
2019/09/19 Javascript
vue+elementUI组件table实现前端分页功能
2020/11/15 Javascript
python中类的一些方法分析
2014/09/25 Python
Python编程实现正则删除命令功能
2017/08/30 Python
python编写暴力破解zip文档程序的实例讲解
2018/04/24 Python
Python Flask前后端Ajax交互的方法示例
2018/07/31 Python
Python安装Flask环境及简单应用示例
2019/05/03 Python
python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)
2020/04/07 Python
解决windows上安装tensorflow时报错,“DLL load failed: 找不到指定的模块”的问题
2020/05/20 Python
Python爬虫设置ip代理过程解析
2020/07/20 Python
python代码实现猜拳小游戏
2020/11/30 Python
修复iPhone的safari浏览器上submit按钮圆角bug
2012/12/24 HTML / CSS
使用html5 canvas创建太空游戏的示例
2014/05/08 HTML / CSS
使用canvas绘制贝塞尔曲线
2014/12/17 HTML / CSS
说出一些常用的类,包,接口
2014/09/22 面试题
50道外企软件测试面试题
2014/08/18 面试题
大学生职业生涯规划书范文
2014/01/04 职场文书
入党积极分子介绍信
2014/01/17 职场文书
销售人员自我评价
2014/02/01 职场文书
运动会广播稿20字
2014/02/18 职场文书
公司应聘自荐书
2014/06/14 职场文书
2014年预备党员学习新党章思想汇报
2014/09/15 职场文书
结婚保证书(三从四德)
2015/02/26 职场文书
2017大学生寒假社会实践心得体会
2016/01/14 职场文书