zoukankan      html  css  js  c++  java
  • 实现图片加载从模糊到清晰显示的方法

    1.通过代码控制

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

    如上如所示,本方法的处理步骤是:
    1).获取照片缩略图和原图的URL,获取照片的长和宽;
    2).加载并显示照片缩略图,将缩略图按照片的长和宽拉伸显示,这时用户看到的是模糊的效果;
    3).加载并显示照片原图,将原图叠加在缩略图上面显示,原图加载多少就显示多少,没有加载的还是显示缩略图,逐步将缩略图覆盖掉,原图在加载的过程中用户看到的是照片从模糊到清晰的渐变效果。
    4).原图加载完后,原图已经全部将缩略图覆盖,这时用户看到的是真实的原图。此时可以隐藏缩略图防止缩略图干扰PNG或GIF等有透明效果的图片显示。

    <!--设置照片的大小-->
    <div style="400px;height:300px;">
        <!--小图拉大显示-->
        <img src="small_url" style="100%;height:100%;"/>
        <!--原图叠加在小图上面-->
        <img src="big_url" style="100%;height:100%;position:absolute;top:0px;left:0px;"/>
    </div>
     
    2.通过图片本身的加载方式

    渐进式JPEG创建

    C#:
    using (Image source = Image.FromFile(@"D:	emp	est2.jpg")) {
    
      ImageCodecInfo codec = ImageCodecInfo.GetImageEncoders().First(c => c.MimeType == "image/jpeg");
    
      EncoderParameters parameters = new EncoderParameters(3);
      parameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L);
      parameters.Param[1] = new EncoderParameter(System.Drawing.Imaging.Encoder.ScanMethod, (int)EncoderValue.ScanMethodInterlaced);
      parameters.Param[2] = new EncoderParameter(System.Drawing.Imaging.Encoder.RenderMethod, (int)EncoderValue.RenderProgressive);
    
      source.Save(@"D:	empsaved.jpg", codec, parameters);
    }
  • 相关阅读:
    git撤销修改
    python参数组合
    java打包jar后,使之一直在linux上运行,不随终端退出而关闭
    输入流加载资源文件的3种方式
    ActiveMQ集群下的消息回流功能
    activemq在一台服务器上启动多个Broker
    JAVA多线程下载
    829. 连续整数求和-leetcode
    mysql笔记-索引
    redis源码学习-skiplist
  • 原文地址:https://www.cnblogs.com/viruscih/p/9812203.html
Copyright © 2011-2022 走看看