php 获取图片的宽高,js如何获取图片宽高

2023-10-27

js获取图片宽高的方法:1、onload后在打印;2、通过complete与onload一起混合使用;3、通过定时循环检测获取,代码为【from:check : width:'+img.width+',height:'+img.heig】。

e1377721ba03cacc5f061638ce9b8292.png

本教程操作环境:windows7系统、css3版,DELL G3电脑。

js获取图片宽高的方法:

一、简陋的获取图片方式// 图片地址 后面加时间戳是为了避免缓存

var img_url = ‘upload/2013/13643608813441.jpg?'+Date.parse(new Date());

// 创建对象

var img = new Image();

// 改变图片的src

img.src = img_url;

// 打印

alert('width:'+img.width+',height:'+img.height);

结果如下:

610711c0c7317d144056e7788416bb16.png

宽高都是0的这个结果很正常,因为图片的相关数据都没有被加载前它的宽高默认就是0 于是可以这么优化!

二、onload后在打印// 图片地址 后面加时间戳是为了避免缓存

var img_url = 'upload/2013/13643608813441.jpg?'+Date.parse(new Date());

// 创建对象

var img = new Image();

// 改变图片的src

img.src = img_url;

// 加载完成执行

img.onload = function(){

// 打印

alert('width:'+img.width+',height:'+img.height);

};

结果如下

5b0a3418807f575999949491c4265a81.png

通过onload就能获取到图片的宽高了。但onload大一点的图通常都比较慢,不实用,但只要图片被浏览器缓存,那么图片加载几乎就不用等待即可触发onload,我们要的是占位符。所以有些人通过缓存获取也可以这么写。

三、通过complete与onload一起混合使用

为了测试缓存效果,注意以下测试图片的url都不加时间戳// 图片地址

var img_url = 'upload/2013/13643608813441.jpg';

// 创建对象

var img = new Image();

// 改变图片的src

img.src = img_url;

// 判断是否有缓存

if(img.complete){

// 打印

alert('from:complete : width:'+img.width+',height:'+img.height);

}else{

// 加载完成执行

img.onload = function(){

// 打印

alert('from:onload : width:'+img.width+',height:'+img.height);

};

}

第一次执行,永远是onload触发

7d7139547879131432dc01e94b360c56.png

你再刷新,几乎都是缓存触发了

8df3b8b8501dfd1c00bb619692e7e269.png

从缓存里读取图片的宽高不用说,非常方便快捷,今天我们要解决的是没有缓存而又快速的相比onload更快的方式去获取图片的宽高。我们常常知道有些图片虽然没有完全down下来,但是已经先有占位符,然后一点一点的加载。既然有占位符那应该是请求图片资源服务器响应后返回的。可服务器什么时候响应并返回宽高的数据没有触发事件,比如onload事件。于是催生了第四种方法

四、通过定时循环检测获取

看看以下例子,为了避免从缓存里读取数据,每一次请求都带时间戳:// 图片地址

var img_url = 'upload/2013/13643608813441.jpg?'+Date.parse(new Date());

// 创建对象

var img = new Image();

// 改变图片的src

img.src = img_url;

// 定时执行获取宽高

var check = function(){

document.body.innerHTML += '

from:check : width:'+img.width+',height:'+img.height+'

';

};

var set = setInterval(check,40);

// 加载完成获取宽高

img.onload = function(){

document.body.innerHTML += '

from:onload : width:'+img.width+',height:'+img.height+'

';

// 取消定时获取宽高

clearInterval(set);

};相关教程推荐:CSS视频教程

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

php 获取图片的宽高,js如何获取图片宽高 的相关文章

  • Linux网络——PXE高效批量网络装机

    Linux网络 PXE高效批量网络装机 一 PXE远程安装服务 1 PXE批量部署的优点 2 搭建PXE网络体系的安装条件 二 PXE 安装进行前的配置 1 PXE装机所需的文件 2 搭建 PXE 过程中使用的服务和程序 DHCP服务 vs
  • Linux上安装JDK、mysql、tomcat,以及将springboot项目部署到Linux上

    安装jdk 1下载jdk并放入linux系统 2解压 mkdir usr local java 创建文件夹 等下就将jdk解压到这里 tar zxvf jdk 8u181 linux x64 tar gz C usr local java
  • 最新模拟登录12306(破解12306验证码)

    最新模拟登录12306 破解12306验证码 重点 对12306验证码的破解 仅供学习交流 请勿 1 找到验证码的图片信息 2 点开headers查看 不难发现是经过base64加密的图片 但是没有请求的url 3 再查看分析发现 上面的一
  • 时序预测

    时序预测 Matlab实现CNN XGBoost卷积神经网络结合极限梯度提升树时间序列预测 目录 时序预测 Matlab实现CNN XGBoost卷积神经网络结合极限梯度提升树时间序列预测 效果一览 基本描述 程序设计 参考资料 效果一览
  • OL-CC:首个众包形式、人工生成的开源中文对话指令集

    数据是训练大模型必不可少的 燃料 但目前的数据集由不同的机构构建 存储分散 难以整合 高质量数据集的建设成本高昂 当前由于商业竞争等原因 导致数据上形成了各自为战的局面 大家无法将分散的数据整合到一起发挥更大的作用 2 月底 智源研究院发布
  • mycat2.0 分库分表报错 3002 - ERROR-CODE: [MYCAT-3002][ERR_FETCH_METADATA] MetadataManager init fail

    1 安装好mycat2 0之后 执行sql进行分库分表 DROP TABLE sys user CREATE TABLE sys user id bigint 0 NOT NULL AUTO INCREMENT COMMENT id use
  • 程序员在囧途之垃圾创业团队 .

    转载地址 https yq aliyun com articles 48175 utm campaign wenzhang utm medium article utm source QQ qun 2017316 utm content m
  • JMeter —— Jar包性能测试 完整流程教学

    本文只使用简单用例演示项目打包为Jar并上JMeter测试的整个过程 关于高级用法请看官方文档 官方文档链接 http jmeter apache org usermanual 一 下载JMeter 官网链接 https jmeter ap
  • Chisel Tutorial(五)——Bundles与Vecs

    以下内容依据2015 7 10版的Chisel 2 2 Tutorial整理 此处的Bundles Vecs就不翻译了 免得因为翻译不准引起一些误解 童鞋们有没有好的建议 lt
  • SpringBoot+Hutool工具类Excel工具-ExcelUtil实现excel文件的导入导出

    Hutool会用的话极大了简化了操作Excel的过程 提高开发效率 废话少说上代码 excel文件导出 public void downLoadFile UserDto dto HttpServletResponse response St
  • kvm虚拟化简介

    1 KVM介绍 KVM是一个基于Linux内核的虚拟机 它属于完全虚拟化范畴 从Linux 2 6 20开始被包含在Linux内核中 KVM基于x86硬件虚拟化技术 它的运行要求Intel VT x或AMD SVM的支持 一般认为 虚拟机监
  • synchronized原理分析

    Java 高并发专题之synchronized关键字 1 synchronized作为jvm关键字有三个作用域 synchronized作用于实例方法 锁住的当前对象 只有当前对象被锁住 新new出来的对象不会被锁住 synchronize
  • 基于python+MobileNetV2算法模型实现一个图像识别分类系统

    一 目录 算法模型介绍 模型使用训练 模型评估 项目扩展 二 算法模型介绍 图像识别是计算机视觉领域的重要研究方向 它在人脸识别 物体检测 图像分类等领域有着广泛的应用 随着移动设备的普及和计算资源的限制 设计高效的图像识别算法变得尤为重要
  • 代理IP与Socks5代理:跨界电商智能爬虫的引擎与安全壁垒

    一 代理IP 智能爬虫的引擎 多地区数据采集 代理IP允许企业模拟不同地区的IP地址 轻松实现多地区数据采集 这为企业洞察全球市场需求提供了重要数据支持 规避反爬虫机制 代理IP通过随机切换IP地址 规避了网站的反爬虫机制 确保数据采集的稳
  • 7.31黄金最新行情走势分析及多空交易策略

    近期有哪些消息面影响黄金走势 黄金多空该如何研判 黄金消息面解析 上周有重磅数据美联储加息的消息 黄金受其影响波动比较频繁 总体空间40美金 但这个过程跌宕起伏 收线来看黄金在连续上涨三周后迎来一根小阴十字星线 多头动能有所减弱 上周四加息
  • 【读书笔记】Java NIO (中文版) 读书笔记

    概述 这本书讲解的一般吧 主要是讲解了 缓冲区 通道 选择器 正则表达式 字符集 主要是讲解了api的使用 以及部分系统知识 比较底层了 而且大部分都是代码的源码讲解 或者api使用的讲解 太细致了 学netty之前可以看看这个 或者两者互
  • 协同过滤推荐算法

    一 协同过滤思想简介 二 协同过滤算法原理介绍 三 基于用户的协同过滤算法描述 四 基于物品的协同过滤算法 基于物品的协同过滤算法的优缺点 一 协同过滤思想简介 协同过滤 从字面上理解 包括协同和过滤两个操作 首先我们在外出和朋友吃饭的时候
  • 【操作系统】王道考研 p54-56 文件共享、文件保护、文件系统的层次结构

    文件共享 文件保护 文件系统的层次结构 知识总览 以下是文件共享的内容 基于索引结点的共享方式 硬链接 用一个count来记录在使用这个文件的用户的个数 当用户删除文件 则用户目录的该文件目录项删除 并count 1 当count 0 则系
  • 安装Oracle EE

    前期 进入自己需要设置的目录 创建文件夹 文件夹授权 mkdir xxx chmod o w oracle oradata chmod 777 oracle oradata 安装ORACLE EE 1 查找镜像 docker search

随机推荐

  • 【Java基础】File类 IO流

    个人简介 gt 个人主页 是Lay的主页 gt 学习方向 JAVA后端开发 gt 种一棵树最好的时间是十年前 其次是现在 gt 往期文章 Java基础 面向对象进阶 二 gt 喜欢的话麻烦点点关注喔 你们的支持是我的最大动力 目录 1 Fi
  • SeetaFaceEngine安装和测试

    一 介绍 必须安装好opencv SeetaFace人脸识别引擎包括了搭建一套全自动人脸识别系统所需的三个核心模块 即 人脸检测模块SeetaFace Detection 面部特征点定位模块SeetaFace Alignment以及人脸特征
  • FRR编译及配置(旧版)

    本文最新状态可点击查看https turbock79 cn p 334 CSDN可点击查看https blog csdn net turbock article details 107039031 爬坑 本文基于官方文档进行编译 发现构建文
  • (详解)Vue3自定义指令

    目录 一 背景 二 提前预习 必看 2 1自定义指令生命周期 2 2 生命周期四个参数 三 自定义指令 3 1私有自定义指令 3 1 1定义指令 3 1 2使用自定义指令 3 2全局自定义指令 3 2 1定义指令 3 2 2使用自定义指令
  • iconfont 使用规则

    使用iconfont可以替代普通的单色小图标 无法替代有层次 渐变或多色的图标 这些还是要用位图来做 风险 需要修改的资源较多 基本所有页面要重新过一遍 可能影响到后续版本输出的进度 工作量预估 按各自负责模块内容 学铭2人日 瑞华3人日
  • 巨神奇,2013年的老Mac,竟直接装上macOS Ventura 13.1 Beta版

    写在前面 上期这篇文章 终于 老Mac可以跨级安装macOS Ventura了 中 我说了通过OpenCore Legacy Patcher可以跨级安装macOS Ventura 但却没给出一个切实的解决方法 本期我就说一下跨级安装的方法
  • 解决YOLOV5训练时P、R、mAP等值均为0的问题

    最近用YOLOV5训练自己的数据集 出现了训练失败的情况 比如box obj cls labels等均为nan或0 找了很多办法 其实就是cuda与PyTorch版本的问题 Epoch gpu mem box obj cls labels
  • 1603A - Di-visible Confusion

    1603A Di visible Confusion 题目 一个长度为N的数组从a1 a2 an 如果在存在不能被整除则可以删除 剩下的数变为a1 a2 an 1 求是否能使得数组为空 题解 每个数都会因为前一个数被删除而前移 所以遍历所有
  • 微信小程序如何实现将数据导出生成excel

    码字不易 有帮助的同学希望能关注一下我的微信公众号 Code程序人生 感谢 代码自用自取 这个需求也是我在接私活的时候遇到的 需求就是 要实现将指定数据库表的数据全部导出生成excel和按需导出 也就是导出全部数据 或者导出指定哪天的数据
  • Package opencv was not found in the pkg-config search path.

    安装好后opencv后执行下面这条语句的时候出错 pkg config cflags opencv Package opencv was not found in the pkg config search path Perhaps you
  • Git创建远程分支并提交代码到远程分支

    1 可以通过git branch r 命令查看远端库的分支情况 动图演示 选择项目右键选择 Git Bash Here 然后输入命令git branch r 2 从已有的分支创建新的分支 如从master分支 创建一个dev分支 但此时并没
  • 如何把itunes中的语音备忘录导出来

    2012 4 18 以前我把手机上的语音备忘录导出到itunes中 现在我想把在itunes中的语音备忘录导出来 如何导 己找到解决办法了 在语音备忘录中的语音文件 右键 选择 在资源管理其中显示
  • VSCode 结合Makefile设置调试方法

    添加构建 编译 链接等 任务 tasks json ctrl shift p打开命令行 输入Tasks Run task Create tasks json file from template 生成默认的tasks json文件 See
  • pythonturtle填充颜色函数_python turtle库颜色填充-绘制心形

    颜色填充函数 使用Turtle不仅可以画线条 也可以将画出的封闭线条进行填充 开始填充 begin fill 设定填充色 fillecolor 结束填充 end fill 实际操作 练习1 画心形import turtle import r
  • matlab中列平方求和公式,matlab求两列数据的平方和

    matlab怎样求矩阵每一行的平方和 有矩阵a则你所要求的矩阵b sum a a 2 附 这是点乘 就是矩阵每个对应位置的元素相乘sum a 2 是按行相加 得出的为列向量若sum a 是按列相加 得出的为行向量 基于matlab的数据正态
  • C语言的强制类型转换本质是什么?

    数据在计算机中是如何存储的 程序最终是要在计算机中运行的 中间产生的数据会暂存在内存 寄存器 cache中 也可以写到硬盘中保存起来 对计算机而言 数据没有什么变量类型 int char等 的区别 以字节为单位 计算机里存在的不是0就是1
  • AES128/ECB/PKCS5Padding 的实现

    AES的相关基础知识直接看WikiPedia 高级加密标准 附上 C C 可用代码 AES Cipher
  • 第15届全国大学生知识竞赛 2022ciscn初赛 部分wp

    Misc ez usb 1 键盘流量 USB协议数据部分在Leftover Capture Data域中 数据长度为八个字节 其中键盘击键信息集中在第三个字节中 如图 发现击键信息为0x06 即对应的按键为C 2 鼠标流量 USB协议鼠标数
  • Quoit Design (白话--分治--平面点对问题)

    Quoit Design Problem Description Have you ever played quoit in a playground Quoit is a game in which flat rings are pitc
  • php 获取图片的宽高,js如何获取图片宽高

    js获取图片宽高的方法 1 onload后在打印 2 通过complete与onload一起混合使用 3 通过定时循环检测获取 代码为 from check width img width height img heig 本教程操作环境 w