通过Image 对象动态装载图片,不可能立即得到图片的问题
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 对象动态装载图片,不可能立即得到图片的问题相关推荐
- 用Aspose.Words for .NET动态生成word文档中的图片或水印
1.概述 在项目中生成word文档,这个功能很普遍的,一般生成都是纯文字或是列表的比较多,便于客户打印,而要把图片也生成到word文档中的需求有些客户也是需要的,例如产品图片.这次我们介绍的是如何利用 ...
- 根据根据图片的url怎么取得图片ImageView对象
我用的是SQLite数据库,表中只有只有与图片相关的 图片名称和图片地址这两个字段,那么怎么查出返回一个ImageView对象呢?图片是根据url从网上搜到的, 大家帮帮忙想想怎么得到,谢谢啦.... ...
- highcharts ajax 数据格式,Highcharts ajax获取json对象动态生成报表生成 .
最近做个项目,项目经理想做一个统计报表,在网上查看些资料就选用Highchars 这里和大家分享下使用心得. 重点说明此代码是针对一个报表显示多个项对比显示. 直接贴代码:web端 $(documen ...
- C# 动态装载 DLL
C# 动态装载 DLL C# 动态装载 DLL LoadDllTool.cs 如下: using System; using System.Collections.Generic; using Sys ...
- 用Python爬取动态加载的诸如百度的图片
用Python爬取动态加载的诸如百度的图片 使用原因 代码如下 模块介绍 selenium模块 lxml解析模块 requests模块 去除重复 开启多线程 效果如下 留言 使用原因 学习Python ...
- chatgpt赋能python:分解gif:使用Python将动态图片拆分成单帧图片
分解gif:使用Python将动态图片拆分成单帧图片 随着互联网上图片的使用越来越普遍,动态图片也成为了大家经常使用的图片之一.GIF动态图作为一种常见的动态图片格式,有时需要将其拆分成单帧图片,以便 ...
- MEF程序设计指南七:使用目录(Catalog)动态装载xap与目录筛选(Filtered Catalog)...
如果不使用MEF进行托管扩展处理,只有通过WebClient进行程序包的下载.解析.实际上MEF的动态下载的底层实现一样是使用的WebClient,然后利用AggregateCatalog进行动态组合 ...
- 【设计模式】代理模式 ( 动态代理使用流程 | 创建目标对象 | 创建被代理对象 | 创建调用处理程序 | 动态创建代理对象 | 动态代理调用 )
文章目录 前言 一.静态代理的弊端 二.动态代理的优势 三.动态代理使用流程 1.目标对象接口 2.被代理对象 3.调用处理程序 4.客户端 四.动态生成 代理对象 类 的 字节码 文件数据 前言 代 ...
- 怎么把动态图从python弄下来_Python将视频或者动态图gif逐帧保存为图片的方法
本文是基于opencv将视频和动态图gif保存为图像帧.可以根据输入视频格式的不同,修改第21行. 对动图的处理不同于视频,PIL库包含对图像序列的基本支持.当打开gif图像时,自动加载第一帧.当图像 ...
最新文章
- 微软关于XP退役的进一步说明。
- 三星s轻奢android+p,三星Galaxy S轻奢版5月21日将至:骁龙660处理器+安卓8.0
- 【Splay】【块状链表】bzoj3223 Tyvj 1729 文艺平衡树
- Linux基金会六大项目合并成LF Networking Fund
- Mysql数据库开发的36条原则
- 应用实践 | 南方科技大学研发基于新型冠状病毒知识图谱模式挖掘系统
- 如何考核产品经理的绩效?
- 每日linux命令学习-历史指令查询(history、fc、alias)
- php中函数的类型提示和文件读取功能
- 书------编程书(FoxPro)
- xml文件查看器_万能文件查看器,一个软件打开电脑所有文件
- linux安装yum报错Unable to locate package yum解决方案
- 计算机毕业设计ssm电影院售票系统java项目mysql数据库
- 音响发烧友---HiFi音频功放
- 拉宾-卡普算法详解以及示例[rabin-karp]
- 飞天熊猫游戏源代码android文本
- 【流媒体开发】9、ffmpeg实现视频录制
- CSS使用小操作(隐藏滚动,实现三角行等...)
- 29python腾讯位置大数据北京2019五一期间迁出数据
- UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xca in position 24: invalid continuation byte
热门文章
- php 23种设计模型 - 组合模式(合成模式)
- base64下载excel (使用blob)
- java线程之线程通信控制
- Hadoop(一)之初识大数据与Hadoop
- 任务03——简单程序测试及 GitHub Issues 的使用
- 配置 Hdp 4 Window 中的一些问题
- 嵌入式实时系统程序开发一:按键程序编写
- 排错-tcpreplay回放错误:send() [218] Message too long (errno = 90)
- Template Code 无法使用 this.Host 报错
- 唐骏:幸福与财富无关