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 相关文章推荐
特殊字符、常规符号及其代码对照表
Jun 26 Javascript
IE8下关于querySelectorAll()的问题
May 13 Javascript
js控制表单奇偶行样式的简单方法
Jul 31 Javascript
jQuery的cookie插件实现保存用户登陆信息
Apr 15 Javascript
node.js适合游戏后台开发吗?
Sep 03 Javascript
jQuery中appendTo()方法用法实例
Jan 08 Javascript
jQuery validate插件实现ajax验证重复的2种方法
Jan 22 Javascript
详细分析Javascript中创建对象的四种方式
Aug 17 Javascript
JavaScript的六种继承方式(推荐)
Jun 26 Javascript
Layui给数据表格动态添加一行并跳转到添加行所在页的方法
Aug 20 Javascript
laydate如何根据开始时间或者结束时间限制范围
Nov 15 Javascript
vue render函数动态加载img的src路径操作
Oct 26 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 正则 过滤html 的超链接
2009/06/02 PHP
php 按指定元素值去除数组元素的实现方法
2011/11/04 PHP
PHP面试题之文件目录操作
2015/10/15 PHP
PHP新建类问题分析及解决思路
2015/11/19 PHP
JavaScript 学习笔记(十一)
2010/01/19 Javascript
javascript forEach通用循环遍历方法
2010/10/11 Javascript
HTML页面登录时的JS验证方法
2014/05/28 Javascript
jQuery实现下滑菜单导航效果代码
2015/08/25 Javascript
jQuery动画显示和隐藏效果实例演示(附demo源码下载)
2015/12/31 Javascript
Jquery中map函数的用法
2016/06/03 Javascript
JS中位置与大小的获取方法
2016/11/22 Javascript
JavaScript实现向select下拉框中添加和删除元素的方法
2017/03/07 Javascript
从零开始学习Node.js系列教程一:http get和post用法分析
2017/04/13 Javascript
vue-router单页面路由
2017/06/17 Javascript
vue使用vue-cli快速创建工程
2017/07/28 Javascript
IE11下使用canvas.toDataURL报SecurityError错误的解决方法
2017/11/19 Javascript
基于Vuex无法观察到值变化的解决方法
2018/03/01 Javascript
Javascript实现购物车功能的详细代码
2018/05/08 Javascript
微信小程序动态生成二维码的实现代码
2018/07/25 Javascript
Vue.js 父子组件通信的十种方式
2018/10/30 Javascript
javascript canvas API内容整理
2020/02/16 Javascript
vue 解决IOS10低版本白屏的问题
2020/11/17 Javascript
操作Windows注册表的简单的Python程序制作教程
2015/04/07 Python
python实现爬虫统计学校BBS男女比例之多线程爬虫(二)
2015/12/31 Python
python编写计算器功能
2019/10/25 Python
Python离线安装各种库及pip的方法
2020/11/28 Python
装上这 14 个插件后,PyCharm 真的是无敌的存在
2021/01/11 Python
Europcar美国/加拿大:预订汽车或卡车租赁服务
2018/11/13 全球购物
车间班组长岗位职责
2013/11/13 职场文书
应届大学生求职信
2013/12/01 职场文书
自荐信如何制作?
2014/02/21 职场文书
企业管理毕业生求职信范文
2014/03/07 职场文书
天猫活动策划方案
2014/08/21 职场文书
大学感恩节活动策划方案
2014/10/11 职场文书
大学生国家助学金感谢信
2015/01/23 职场文书
5行Python代码实现一键批量扣图
2021/06/29 Python