首页 > 其他分享 >html照片从模糊到清晰的渐变加载显示方法

html照片从模糊到清晰的渐变加载显示方法

时间:2023-06-08 17:37:29浏览次数:40  
标签:原图 显示 缩略图 渐变 用户 照片 html 加载


1.背景介绍
在网络相册应用中用户查看照片是最朴素的需求,当网络比较慢的时候查看照片等待的时间是比较长的,用户体验会很差。

 

2.现状
现在加载照片的方法主要有一下两种:
(1)最原始的方式在html页面直接用img标签加载显示照片。该方法在网络速度比较慢或者要显示的照片比较大的时候会页面出现空白的等待过程,并且不能开始给用户看到照片大概的情况,用户体验比较不好
(2)在html页面先用img标签加载显示照片的缩略图,同时用javascript隐藏的加载照片的原图,等照片大图加载完成后再将原图显示到页面中。以下是流程图:

该方法用户可以先看到的是模糊的小图,等照片的原图加载完后才能看到真实的照片,如果网络慢的话中间等待的时间也是比较长的,用户就一直看到模糊的小图,用户体验也不好。

 

3.我们的解决方案
QQ相册最近做的一些优化方法解决了上诉两个方法的缺点和满足了用户查看照片的需求:第一时间看到照片大概情况和尽可能快的看到清晰的原图。该方法使用缩略图和原图同时加载并叠加显示,先加载缩略图并拉大显示,大图叠加在缩略图上面同时加载。缩略图很小通常很快就能给用户看到照片模糊的效果,大图加载过程中从上往下逐步覆盖缩略图,这样用户就可以看到加载过程中的大图。
(1)示例图

 

如上如所示,本方法的处理步骤是:
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>

 




标签:原图,显示,缩略图,渐变,用户,照片,html,加载
From: https://blog.51cto.com/u_8895844/6441653

相关文章

  • html5游戏制作入门系列教程(五)
    我们继续这一系列文章,使用HTML5的canvas组件进行游戏开发。今天,这是相当完整的游戏例子–它会回顾经典的旧电脑游戏–坦克大战。我会教你使用阵列地图并教你如何检测活动对象(坦克)与环境(基于阵列的地图)的碰撞。你可以点击这里阅读这一系列教程的前一篇文章:html5游戏制作入门系列......
  • html5游戏制作入门系列教程(二)
    今天,我们继续html5游戏制作入门系列的系列文章。今天,我们将继续基础知识(也许甚至是高级技巧的基础)。我要告诉你如何具有渐变颜色填充对象,绘制文本,使用自定义的字体绘制文本,基本的动画,以及最重要的UI元素–按钮。 我们以前的文章中,你可以在这里阅读:html5游戏制作入门系列教程(一)。......
  • html5游戏制作入门系列教程(一)
    从今天开始,我们将开始HTML5游戏开发一系列的文章。在我们的第一篇文章中,我们将讲解在画布canvas上的基础工作,创建简单的对象,填充和事件处理程序。另外,要注意在这个阶段中,我们不会立即学习WebGL相关的3D部分。但我们会尽快在未来的WebGL。 在每篇文章中,我们都将学习到一些新的东西......
  • jquery Mobile点击显示加载等待效果
    点击某个按钮或链接时,触发等待加载效果:<script><!--$(document).bind("mobileinit",function(){});$(function(){//默认设置,一个小圈圈在转$('#default').live('tap',function(){$.mobile.loadingMessageTe......
  • CSS实现简单动态渐变闪烁效果
    CSS练习用例:.event{border-radius:4px;-webkit-border-radius:4px;color:#FFFFFF;font-size:12px;margin:0px30px;padding:2px0px;}.event.received{background-color:#4B946A;display:none;}@keyframe......
  • 使用GDB调试断点信息是gdb动态添加或取消的还是将断点烧录到elf文件的?断点信息是如何
    使用GDB调试断点信息是gdb动态添加或取消的还是将断点烧录到elf文件的?断点信息是如何加载进单片机的并进行加下来的调试运行的? from:GPT-4GDB(GNU调试器)是一个用于调试程序的强大工具,它可以让你设置断点、检查变量和内存、执行单步调试等。在单片机(微控制器)上使用GDB进行调试......
  • .NET代码审计XSS篇-Html.Raw
    在.NETMVC项目中,默认创建的视图,都是以cshtml为后缀的Razor视图,这种视图通常以.cshtml文件扩展名,Razor视图引擎对自动对输出的内容进行HTML编码,这些字符会被编码成HTML实体,如图1如果确实某些场景需要在视图中显示原始HTML内容,而不进行HTML编码,可以使用Html.Raw方法。Html.Raw标......
  • python 解析HTML和XML文档
    一、BeautifulSoupBeautifulSoup是一个Python包,用于解析HTML和XML文档。它可以快速而方便地从网页中提取信息,并以易于使用的方式对其进行处理。它支持各种解析器,包括内置的Python解析器和第三方解析器,例如lxml和html5lib。二、对标签提取代码示列以下是使用BeautifulSoup解析H......
  • 文字效果 用背景渐变实现 波浪背景文字
    1.实现波浪背景div{width:400px;height:200px;outline:2pxdashedgray;--c:#2196F3;--w1:radial-gradient(100%57%attop,#0000100%,var(--c)100.5%)no-repeat;--w2:radial-gradient(100%57%atbottom,var(--c)100%,#0000100.5%)no-repea......
  • 日历组件html
    <!DOCTYPEhtml><html><head> <title>CalendarComponent</title> <style> body{ font-family:Arial,sans-serif; background-color:#f2f2f2; } h1{ text-align:center; margin-top:50px; margin-bottom......