//JS缩略图正确的方法
var imgView = document.getElementById("imgview");

var imgObj = new Image();
imgObj.src = imgUrl;

function thumbImg(imgObj){
       if (typeof(imgObj) == 'object'){
             if ((imgObj.width != 0) && (imgObj.height != 0)){
                    var z = NewSize(imgObj.width, imgObj.height, imgW, imgH);   //调用压缩函数
                    imgView.setAttribute("src", imgObj.src);
                    imgView.style.width = z.w + "px"; 
                    imgView.style.height = z.h + "px";
             }else{
                   //setTimeout(thumbImg(imgObj), 100);   //这样会产生溢出,
                   setTimeout(' thumbImg (imgObj) ' ,  '100');  //这样好一点
             }
       }
};

需要注意的是,由于setTimeout函数是时间过程,所以执行的代码必须安排在函数thumbImg里面,而不能放在外面执行。
因此,凡是有 setTimeOut或 setInterval 的函数,其实现必须放在代码中,而不能放在外部,也不能返回一个值。
他是 void 类型,而不是 return 类型。

---------------------------
//预加载一组图片的正确方法
var arrImg = new Array();
... 循环载入图片名称...

var imgList = new Array();
var imgSize = new Array();
var iTimer = null;

for(var i=0; i<arrImg.length; i++){
         var img = new Image();
         img.src =  arrImg[i];
         addImg(img);
         img = null;
 };

function addImg(imgObj){
     if(typeof(imgObj) == 'object'){
            if(imgObj.width !=0 && imgObj.height !=0){
                 imgList.Add(imgObj);
                 imgSize.Add(NewSize(imgObj.width, imgObj.height, imgW, imgH));
                 clearTimeout(iTimer); imgObj = null; iTimer = null;
            }else{
                 iTimer = setTimeout( 'thumbImg(imbObj)' ,  '100' );  //注意要加上引号
           }
     }
 };

这样才能确保图片被真正预加载了,直接给 image对象赋予src值,并不能马上加载,他有个延迟的问题。

转载于:https://www.cnblogs.com/sw22225458/archive/2008/01/05/1026835.html

通过Image 对象动态装载图片,不可能立即得到图片的问题相关推荐

  1. 用Aspose.Words for .NET动态生成word文档中的图片或水印

    1.概述 在项目中生成word文档,这个功能很普遍的,一般生成都是纯文字或是列表的比较多,便于客户打印,而要把图片也生成到word文档中的需求有些客户也是需要的,例如产品图片.这次我们介绍的是如何利用 ...

  2. 根据根据图片的url怎么取得图片ImageView对象

    我用的是SQLite数据库,表中只有只有与图片相关的 图片名称和图片地址这两个字段,那么怎么查出返回一个ImageView对象呢?图片是根据url从网上搜到的, 大家帮帮忙想想怎么得到,谢谢啦.... ...

  3. highcharts ajax 数据格式,Highcharts ajax获取json对象动态生成报表生成 .

    最近做个项目,项目经理想做一个统计报表,在网上查看些资料就选用Highchars 这里和大家分享下使用心得. 重点说明此代码是针对一个报表显示多个项对比显示. 直接贴代码:web端 $(documen ...

  4. C# 动态装载 DLL

    C# 动态装载 DLL C# 动态装载 DLL LoadDllTool.cs 如下: using System; using System.Collections.Generic; using Sys ...

  5. 用Python爬取动态加载的诸如百度的图片

    用Python爬取动态加载的诸如百度的图片 使用原因 代码如下 模块介绍 selenium模块 lxml解析模块 requests模块 去除重复 开启多线程 效果如下 留言 使用原因 学习Python ...

  6. chatgpt赋能python:分解gif:使用Python将动态图片拆分成单帧图片

    分解gif:使用Python将动态图片拆分成单帧图片 随着互联网上图片的使用越来越普遍,动态图片也成为了大家经常使用的图片之一.GIF动态图作为一种常见的动态图片格式,有时需要将其拆分成单帧图片,以便 ...

  7. MEF程序设计指南七:使用目录(Catalog)动态装载xap与目录筛选(Filtered Catalog)...

    如果不使用MEF进行托管扩展处理,只有通过WebClient进行程序包的下载.解析.实际上MEF的动态下载的底层实现一样是使用的WebClient,然后利用AggregateCatalog进行动态组合 ...

  8. 【设计模式】代理模式 ( 动态代理使用流程 | 创建目标对象 | 创建被代理对象 | 创建调用处理程序 | 动态创建代理对象 | 动态代理调用 )

    文章目录 前言 一.静态代理的弊端 二.动态代理的优势 三.动态代理使用流程 1.目标对象接口 2.被代理对象 3.调用处理程序 4.客户端 四.动态生成 代理对象 类 的 字节码 文件数据 前言 代 ...

  9. 怎么把动态图从python弄下来_Python将视频或者动态图gif逐帧保存为图片的方法

    本文是基于opencv将视频和动态图gif保存为图像帧.可以根据输入视频格式的不同,修改第21行. 对动图的处理不同于视频,PIL库包含对图像序列的基本支持.当打开gif图像时,自动加载第一帧.当图像 ...

最新文章

  1. 微软关于XP退役的进一步说明。
  2. 三星s轻奢android+p,三星Galaxy S轻奢版5月21日将至:骁龙660处理器+安卓8.0
  3. 【Splay】【块状链表】bzoj3223 Tyvj 1729 文艺平衡树
  4. Linux基金会六大项目合并成LF Networking Fund
  5. Mysql数据库开发的36条原则
  6. 应用实践 | 南方科技大学研发基于新型冠状病毒知识图谱模式挖掘系统
  7. 如何考核产品经理的绩效?
  8. 每日linux命令学习-历史指令查询(history、fc、alias)
  9. php中函数的类型提示和文件读取功能
  10. 书------编程书(FoxPro)
  11. xml文件查看器_万能文件查看器,一个软件打开电脑所有文件
  12. linux安装yum报错Unable to locate package yum解决方案
  13. 计算机毕业设计ssm电影院售票系统java项目mysql数据库
  14. 音响发烧友---HiFi音频功放
  15. 拉宾-卡普算法详解以及示例[rabin-karp]
  16. 飞天熊猫游戏源代码android文本
  17. 【流媒体开发】9、ffmpeg实现视频录制
  18. CSS使用小操作(隐藏滚动,实现三角行等...)
  19. 29python腾讯位置大数据北京2019五一期间迁出数据
  20. UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xca in position 24: invalid continuation byte

热门文章

  1. php 23种设计模型 - 组合模式(合成模式)
  2. base64下载excel (使用blob)
  3. java线程之线程通信控制
  4. Hadoop(一)之初识大数据与Hadoop
  5. 任务03——简单程序测试及 GitHub Issues 的使用
  6. 配置 Hdp 4 Window 中的一些问题
  7. 嵌入式实时系统程序开发一:按键程序编写
  8. 排错-tcpreplay回放错误:send() [218] Message too long (errno = 90)
  9. Template Code 无法使用 this.Host 报错
  10. 唐骏:幸福与财富无关