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 相关文章推荐
可以把编码转换成 gb2312编码lib.UTF8toGB2312.js
Aug 21 Javascript
学习ExtJS Window常用方法
Oct 07 Javascript
返回对象在当前级别中是第几个元素的实现代码
Jan 20 Javascript
jQuery学习笔记 操作jQuery对象 文档处理
Sep 19 Javascript
jQuery中setTimeout的几种使用方法小结
Apr 07 Javascript
一个获取第n个元素节点的js函数
Sep 02 Javascript
jquery实现倒计时效果
Dec 14 Javascript
Js遍历键值对形式对象或Map形式的方法
Aug 08 Javascript
微信小程序进行微信支付的步骤昂述
Dec 01 Javascript
vuejs通过filterBy、orderBy实现搜索筛选、降序排序数据
Oct 26 Javascript
jQuery高级编程之js对象、json与ajax用法实例分析
Nov 01 jQuery
vue 解决文本框被键盘遮住的问题
Nov 06 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实现短域名互转
2013/07/05 PHP
php网站判断用户是否是手机访问的方法
2013/11/01 PHP
百度ping方法使用示例 自动ping百度
2014/01/26 PHP
WebQQ最新登陆协议的用法
2014/12/22 PHP
PHP实现负载均衡session共享redis缓存操作示例
2018/08/22 PHP
从Ajax到JQuery Ajax学习
2007/02/14 Javascript
JavaScript中的Screen屏幕对象
2008/01/16 Javascript
JQuery live函数
2010/12/24 Javascript
javascript中强制执行toString()具体实现
2013/04/27 Javascript
javascript数组操作(创建、元素删除、数组的拷贝)
2014/04/07 Javascript
jQuery实现个性翻牌效果导航菜单的方法
2015/03/09 Javascript
javascript实现table选中的行以指定颜色高亮显示的方法
2015/05/13 Javascript
Three.js学习之网格
2016/08/10 Javascript
Angular动态添加、删除输入框并计算值实例代码
2017/03/29 Javascript
JavaScript使用ZeroClipboard操作剪切板
2017/05/10 Javascript
Vue框架之goods组件开发详解
2018/01/25 Javascript
vue实现类似淘宝商品评价页面星级评价及上传多张图片功能
2018/10/29 Javascript
Python科学计算环境推荐——Anaconda
2014/06/30 Python
教你如何将 Sublime 3 打造成 Python/Django IDE开发利器
2014/07/04 Python
python获取本机mac地址和ip地址的方法
2015/04/29 Python
Python编程中装饰器的使用示例解析
2016/06/20 Python
python基础教程之五种数据类型详解
2017/01/12 Python
python简单线程和协程学习心得(分享)
2017/06/14 Python
Flask 让jsonify返回的json串支持中文显示的方法
2018/03/26 Python
两个元祖T1=('a', 'b'),T2=('c', 'd')使用匿名函数将其转变成[{'a': 'c'},{'b': 'd'}]的几种方法
2019/03/05 Python
python打印9宫格、25宫格等奇数格 满足横竖斜相加和相等
2019/07/19 Python
python selenium操作cookie的实现
2020/03/18 Python
Python任务调度利器之APScheduler详解
2020/04/02 Python
PyInstaller的安装和使用的详细步骤
2020/06/02 Python
大学生入党自我鉴定
2013/10/31 职场文书
家长对孩子评语
2014/01/30 职场文书
幼儿园大班评语大全
2014/04/17 职场文书
2014年学校食堂工作总结
2014/11/25 职场文书
2015年招生工作总结
2015/05/04 职场文书
尼克胡哲观后感
2015/06/08 职场文书
师德师风培训感言
2015/08/03 职场文书