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 相关文章推荐
editable.js 基于jquery的表格的编辑插件
Oct 24 Javascript
JavaScript语言核心数据类型和变量使用介绍
Aug 23 Javascript
JS版元素周期表实现方法
Aug 05 Javascript
JS组件Bootstrap Select2使用方法解析
May 30 Javascript
jQuery1.9+中删除了live以后的替代方法
Jun 17 Javascript
第一次接触神奇的Bootstrap表单
Jul 27 Javascript
js实现表单及时验证功能 用户信息立即验证
Sep 13 Javascript
vue监听scroll的坑的解决方法
Sep 07 Javascript
Vue框架之goods组件开发详解
Jan 25 Javascript
微信小程序 JS动态修改样式的实现方法
Dec 16 Javascript
node.js文件操作系统实例详解
Nov 05 Javascript
arcgis.js控制地图地体的显示范围超出区域自动弹回(实现思路)
Jan 28 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边学边教》(01.开篇――准备工作)
2006/12/13 PHP
简单介绍下 PHP5 中引入的 MYSQLI的用途
2007/03/19 PHP
PHP中查询SQL Server或Sybase时TEXT字段被截断的解决方法
2009/03/10 PHP
yii操作session实例简介
2014/07/31 PHP
php实现设计模式中的单例模式详解
2014/10/11 PHP
使用 PHPStorm 开发 Laravel
2015/03/24 PHP
php自定义函数转换html标签示例
2016/09/29 PHP
IE event.srcElement和FF event.target 功能比较
2010/03/01 Javascript
js修改地址栏URL参数解决url参数问题
2012/12/15 Javascript
javascript实现原生ajax的几种方法介绍
2013/09/21 Javascript
prototype.js常用函数详解
2016/06/18 Javascript
js实现无缝循环滚动
2020/06/23 Javascript
jQuery 实现鼠标画框并对框内数据选中的实例代码
2017/08/29 jQuery
使用Bootrap和Vue实现仿百度搜索功能
2017/10/26 Javascript
jquery radio 动态控制选中失效问题的解决方法
2018/02/28 jQuery
解决vue的 v-for 循环中图片加载路径问题
2018/09/03 Javascript
js监听html页面的上下滚动事件方法
2018/09/11 Javascript
浅析JS中什么是自定义react数据验证组件
2018/10/19 Javascript
仿照Element-ui实现一个简易的$message方法
2020/09/14 Javascript
[04:47]DOTA2-潍坊风行电子俱乐部探秘
2014/08/08 DOTA
一篇不错的Python入门教程
2007/02/08 Python
Python中urllib2模块的8个使用细节分享
2015/01/01 Python
python实现图片识别汽车功能
2018/11/30 Python
uwsgi+nginx部署Django项目操作示例
2018/12/04 Python
NumPy 基本切片和索引的具体使用方法
2019/04/24 Python
解析python 类方法、对象方法、静态方法
2020/08/15 Python
python 实现百度网盘非会员上传超过500个文件的方法
2021/01/07 Python
python实现学生信息管理系统源码
2021/02/22 Python
沙特阿拉伯电子产品和家用电器购物网站:Black Box
2019/07/24 全球购物
C面试题
2015/10/08 面试题
关于随地扔垃圾的检讨书
2014/09/30 职场文书
房产销售独家委托书范本
2014/10/01 职场文书
上班迟到检讨书300字
2014/10/18 职场文书
日本读研:怎样写好一篇日本研究计划书?
2019/07/15 职场文书
Matlab求解数组中的最大值及它所在的具体位置
2021/04/16 Python
微信小程序实现拍照和相册选取图片
2021/05/09 Javascript