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 相关文章推荐
syntaxhighlighter 使用方法
Jul 02 Javascript
&amp;lt;script defer&amp;gt; defer 是什么意思
May 10 Javascript
JavaScript中常见陷阱小结
Apr 27 Javascript
子页向父页传值示例
Nov 27 Javascript
JavaScript获得页面base标签中url的方法
Apr 03 Javascript
使用AngularJS来实现HTML页面嵌套的方法
Jun 17 Javascript
JS Attribute属性操作详解
May 19 Javascript
微信小程序 简单DEMO布局,逻辑,样式的练习
Nov 30 Javascript
jquery插件ContextMenu设置右键菜单
Mar 13 Javascript
jQuery实现的背景颜色渐变动画效果示例
Mar 24 jQuery
Angular.js中控制器之间的传值详解
Apr 24 Javascript
Vue中使用sass实现换肤功能
Sep 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
火车头discuz6.1 完美采集的php接口文件
2009/09/13 PHP
php中实现获取随机数组列表的自定义函数
2015/04/02 PHP
ThinkPHP5 验证器的具体使用
2018/05/31 PHP
基于jquery+thickbox仿校内登录注册框
2010/06/07 Javascript
Jquery插件编写简明教程
2014/03/25 Javascript
javascript去掉代码里面的注释
2015/07/24 Javascript
HTML5之WebSocket入门3 -通信模型socket.io
2015/08/21 Javascript
快速学习jQuery插件 Cookie插件使用方法
2015/12/01 Javascript
Javascript HTML5 Canvas实现的一个画板
2020/04/12 Javascript
React组件的三种写法总结
2017/01/12 Javascript
javascript基础知识之html5轮播图实例讲解(44)
2017/02/17 Javascript
RequireJs的使用详解
2017/02/19 Javascript
JS实现获取图片大小和预览的方法完整实例【兼容IE和其它浏览器】
2017/04/24 Javascript
vue.js使用v-model实现表单元素(input) 双向数据绑定功能示例
2019/03/08 Javascript
小程序实现自定义导航栏适配完美版
2019/04/02 Javascript
微信小程序HTTP请求从0到1封装
2019/09/09 Javascript
vue实现前端分页完整代码
2020/06/17 Javascript
js实现抽奖功能
2020/11/24 Javascript
vue3.0实现插件封装
2020/12/14 Vue.js
[50:24]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
centos下更新Python版本的步骤
2013/02/12 Python
Python抓取淘宝下拉框关键词的方法
2015/07/08 Python
在Django的模型和公用函数中使用惰性翻译对象
2015/07/27 Python
对python中的float除法和整除法的实例详解
2019/07/20 Python
在python image 中安装中文字体的实现方法
2019/08/22 Python
python自动识别文本编码格式代码
2019/12/26 Python
Windows+Anaconda3+PyTorch+PyCharm的安装教程图文详解
2020/04/03 Python
keras自动编码器实现系列之卷积自动编码器操作
2020/07/03 Python
Python-openCV开运算实例
2020/07/05 Python
Python3中FuzzyWuzzy库实例用法
2020/11/18 Python
如何通过python检查文件是否被占用
2020/12/18 Python
Html+Css+Jquery实现左侧滑动拉伸导航菜单栏的示例代码
2020/03/17 HTML / CSS
JBL澳大利亚官方商店:扬声器、耳机和音响系统
2018/05/24 全球购物
金山毒霸系列的笔试题
2013/04/13 面试题
2014感恩节演讲稿大全
2014/10/11 职场文书
工作检讨书范文
2015/01/23 职场文书