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 相关文章推荐
javascript 节点排序 2
Jan 31 Javascript
js Array对象的扩展函数代码
Apr 24 Javascript
编写高效jQuery代码的4个原则和5个技巧
Apr 24 Javascript
jquery右下角自动弹出可关闭的广告层
May 08 Javascript
学习JavaScript设计模式(代理模式)
Dec 03 Javascript
AngularJS使用ng-inlude指令加载页面失败的原因与解决方法
Jan 19 Javascript
js实现文字列表无缝滚动效果
Jun 23 Javascript
基于vue-cli创建的项目的目录结构及说明介绍
Nov 23 Javascript
使用json-server简单完成CRUD模拟后台数据的方法
Jul 12 Javascript
详解vscode中vue代码颜色插件
Oct 11 Javascript
Vuejs学习笔记之使用指令v-model完成表单的数据双向绑定
Apr 29 Javascript
Vue2项目中对百度地图的封装使用详解
Jun 16 Vue.js
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设计模式 Builder(建造者模式)
2011/06/26 PHP
php实现常见图片格式的水印和缩略图制作(面向对象)
2016/06/15 PHP
写出更好的JavaScript之undefined篇(上)
2009/11/22 Javascript
jquery无缝向上滚动实现代码
2013/03/29 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战二)
2013/08/21 Javascript
javascript实现促销倒计时+fixed固定在底部
2013/09/18 Javascript
DOM节点深度克隆函数cloneNode()用法实例
2015/01/12 Javascript
jquery插件star-rating.js实现星级评分特效
2015/04/15 Javascript
简单实现bootstrap选项卡效果
2017/02/08 Javascript
js 实现获取name 相同的页面元素并循环遍历的方法
2017/02/14 Javascript
基于Node的React图片上传组件实现实例代码
2017/05/10 Javascript
js实现股票实时刷新数据案例
2017/05/14 Javascript
Javascript ES6中对象类型Sets的介绍与使用详解
2017/07/17 Javascript
JavaScript截屏功能的实现代码
2017/07/28 Javascript
微信小程序swiper组件用法实例分析【附源码下载】
2017/12/07 Javascript
vue之父子组件间通信实例讲解(props、$ref、$emit)
2018/05/22 Javascript
element-ui 本地化使用教程详解
2019/10/28 Javascript
VUE前端从后台请求过来的数据进行转换数据结构操作
2020/11/11 Javascript
[04:03]DOTA2英雄梦之声_第02期_风暴之灵
2014/06/30 DOTA
[54:06]OG vs TNC 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python远程登录代码
2008/04/29 Python
Python中正则表达式详解
2017/05/17 Python
Python数字图像处理之霍夫线变换实现详解
2018/01/12 Python
Python发送http请求解析返回json的实例
2018/03/26 Python
pycharm新建Vue项目的方法步骤(图文)
2020/03/04 Python
python中的unittest框架实例详解
2021/02/05 Python
美国第一香水网站:Perfume.com
2017/01/23 全球购物
成教毕业生自我鉴定
2013/10/23 职场文书
考博专家推荐信模板
2013/12/02 职场文书
疾病捐款倡议书
2014/05/13 职场文书
党员个人年度总结
2015/02/14 职场文书
语文教师求职信范文
2015/03/20 职场文书
2015年酒店客房部工作总结
2015/04/25 职场文书
投标单位介绍信
2015/05/05 职场文书
Python制作一个随机抽奖小工具的实现
2021/07/07 Python
HTML基础详解(上)
2021/10/16 HTML / CSS