Skip to content

getImageDimensions

获取图片文件的自然宽度和高度(像素)。

前置依赖

依赖参数

参数名类型说明
deps.ImageWindow['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
}

参数

参数名类型必填说明
fileFile图片文件对象
depsGetImageDimensionsDeps依赖注入对象

返回值

类型说明
Promise<{ width: number; height: number }>Promise,解析为包含宽度和高度的对象

工作原理

  1. 使用 createObjectURL 为文件创建临时 URL
  2. 创建新的 Image 对象
  3. 设置 Image 的 src 为创建的对象 URL
  4. 监听 load 事件,等待图片加载完成
  5. 图片加载完成后,读取 naturalWidthnaturalHeight 属性
  6. 返回包含宽度和高度的对象
  7. 如果加载失败,Promise reject 并抛出错误

返回的是图片的自然尺寸(原始尺寸),而非显示尺寸。