getImageDimensions
获取图片文件的自然宽度和高度(像素)。
前置依赖
依赖参数
| 参数名 | 类型 | 说明 |
|---|---|---|
deps.Image | Window['Image'] | Image 构造函数 |
deps.createObjectURL | (blob: File) => string | 创建对象 URL 用于加载图片 |
环境要求
- 浏览器环境: 使用 Image API 和 URL API
typescript
// 浏览器环境
const deps = {
Image: window.Image,
createObjectURL: URL.createObjectURL.bind(URL)
}函数签名
typescript
function getImageDimensions(
file: File,
deps: GetImageDimensionsDeps
): Promise<{ width: number; height: number }>
interface GetImageDimensionsDeps {
Image: Window['Image']
createObjectURL: (blob: File) => string
}参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
file | File | 是 | 图片文件对象 |
deps | GetImageDimensionsDeps | 是 | 依赖注入对象 |
返回值
| 类型 | 说明 |
|---|---|
Promise<{ width: number; height: number }> | Promise,解析为包含宽度和高度的对象 |
工作原理
- 使用
createObjectURL为文件创建临时 URL - 创建新的 Image 对象
- 设置 Image 的
src为创建的对象 URL - 监听
load事件,等待图片加载完成 - 图片加载完成后,读取
naturalWidth和naturalHeight属性 - 返回包含宽度和高度的对象
- 如果加载失败,Promise reject 并抛出错误
返回的是图片的自然尺寸(原始尺寸),而非显示尺寸。