Back to Uni App

Get Image Info

docs/api/get-image-info.md

2.3.311.0 KB
Original Source

uni.getImageInfo(options) @getImageInfo

获取图片信息

getImageInfo 兼容性

Web微信小程序AndroidiOSHarmonyOSHarmonyOS(Vapor)
4.04.414.184.254.615.0

参数

名称类型必填默认值兼容性描述
optionsGetImageInfoOptions-Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -

options 的属性描述

名称类型必备默认值兼容性描述
srcstring.ImageURIString-Web: -; 微信小程序: -; Android: 4.18; iOS: 4.25; HarmonyOS: -图片的路径,可以是相对路径,临时文件路径,存储文件路径,网络图片路径
success(callback: GetImageInfoSuccess) => void-Web: -; 微信小程序: -; Android: 4.18; iOS: 4.25; HarmonyOS: -接口调用成功的回调函数
fail(callback: GetImageInfoFail) => void-Web: -; 微信小程序: -; Android: 4.18; iOS: 4.25; HarmonyOS: -接口调用失败的回调函数
complete(callback: any) => void-Web: -; 微信小程序: -; Android: 4.18; iOS: 4.25; HarmonyOS: -接口调用结束的回调函数(调用成功、失败都会执行)

GetImageInfoSuccess 的属性值 @getimageinfosuccess-values

名称类型必备默认值兼容性描述
widthnumber-Web: -; 微信小程序: -; Android: 4.18; iOS: 4.25; HarmonyOS: -图片宽度,单位px
heightnumber-Web: -; 微信小程序: -; Android: 4.18; iOS: 4.25; HarmonyOS: -图片高度,单位px
pathstring-Web: -; 微信小程序: -; Android: 4.18; iOS: 4.25; HarmonyOS: -返回图片的本地路径
orientationstring-Web: x; 微信小程序: 4.41; Android: 4.18; iOS: 4.25; HarmonyOS: -返回图片的方向
typestring-Web: x; 微信小程序: 4.41; Android: 4.18; iOS: 4.25; HarmonyOS: -返回图片的格式

orientation 的属性描述

合法值兼容性描述
upWeb: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: --
downWeb: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: --
leftWeb: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: --
rightWeb: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: --
up-mirroredWeb: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: --
down-mirroredWeb: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: --
left-mirroredWeb: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: --
right-mirroredWeb: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: --

GetImageInfoFail 的属性值 @getimageinfofail-values

名称类型必备默认值兼容性描述
errCodenumber-Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -错误码
errSubjectstring-Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -统一错误主题(模块)名称
dataany-Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -错误信息中包含的数据
causeError-Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -源错误信息,可以包含多个错误,详见SourceError
errMsgstring-Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -

errCode 的属性描述

合法值兼容性描述
1101001Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -用户取消
1101002Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -urls至少包含一张图片地址
1101003Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -文件不存在
1101004Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -图片加载失败
1101005Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -未获取权限
1101006Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -图片或视频保存失败
1101007Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -图片裁剪失败
1101008Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -拍照或录像失败
1101009Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -图片压缩失败
1101010Web: -; 微信小程序: -; Android: -; iOS: -; HarmonyOS: -其他错误

参见

tips

web平台读取图片的exif信息,需要引入三方库。考虑到影响web runtime的体积大小,这些三方库并没有内置在uni-app x中。

目前比较主流的库是ExifReader,开发者可自行使用。

示例

示例为hello uni-app x alpha分支,与最新HBuilderX Alpha版同步。与最新正式版同步的master分支示例另见 ::: preview https://hellouniappx.dcloud.net.cn/web/#/pages/API/get-image-info/get-image-info

appRedirect https://hellouniappx.dcloud.net.cn/appredirect.html?path=pages/API/get-image-info/get-image-info

示例

vue
<template>
  <!-- #ifdef APP -->
  <scroll-view style="flex:1">
  <!-- #endif -->
    <page-head :title="title"></page-head>
    <view class="uni-padding-wrap">
      <view class="uni-title">
        <text class="uni-subtitle-text">获取本地相对路径图片信息</text>
      </view>
      <image class="image" :src="relativeImagePath" mode="aspectFit"></image>
      <text class="margin-top-10">{{absoluteImageInfo}}</text>
      <view class="uni-title">
        <text class="uni-subtitle-text">获取网络路径图片信息</text>
      </view>
      <image class="image" :src="remoteImagePath" mode="aspectFit"></image>
      <text class="margin-top-10">{{remoteImageInfo}}</text>
      <view class="uni-title">
        <text class="uni-subtitle-text">获取本地绝对路径图片信息</text>
      </view>
      <image class="image" :src="absoluteImagePath" mode="aspectFit"></image>
      <text class="margin-top-10">{{relativeImageInfo}}</text>
      <view class="uni-btn-v">
        <button type="primary" @click="chooseImage">拍摄照片或从相册中选择照片</button>
      </view>
    </view>
  <!-- #ifdef APP -->
  </scroll-view>
  <!-- #endif -->
</template>

<script setup lang="uts">
  type TestStateType = {
    imageInfoForTest: UTSJSONObject | null
  }

  const title = ref("getImageInfo")
  const relativeImagePath = ref("/static/test-image/logo.png")
  const relativeImageInfo = ref("")
  const absoluteImagePath = ref("")
  const absoluteImageInfo = ref("")
  const remoteImagePath = ref("https://request.dcloud.net.cn/api/http/contentType/image/png")
  const remoteImageInfo = ref("")
  // 自动化测试
  const testState = reactive({
    imageInfoForTest: null as UTSJSONObject | null
  } as TestStateType)

  const chooseImage = () => {
    uni.chooseImage({
      count: 1,
      success: (res) => {
        absoluteImagePath.value = res.tempFilePaths[0];
        uni.getImageInfo({
          src: res.tempFilePaths[0],
          success: (_res) => {
            console.log("getImageInfo success", JSON.stringify(_res));
            relativeImageInfo.value = `图片宽度: ${_res.width}\n图片高度: ${_res.height}\n图片路径: ${_res.path}\n图片方向: ${_res.orientation}\n图片格式: ${_res.type}`;
          },
          fail: (err) => {
            uni.showModal({
              title: "获取图片信息失败",
              content: JSON.stringify(err),
              showCancel: false
            });
          }
        });
      }
    });
  }

  onReady(() => {
    uni.getImageInfo({
      src: relativeImagePath.value,
      success: (res) => {
        console.log("getImageInfo success", JSON.stringify(res));
        absoluteImageInfo.value = `图片宽度: ${res.width}\n图片高度: ${res.height}\n图片路径: ${res.path}\n图片方向: ${res.orientation}\n图片格式: ${res.type}`;
        testState.imageInfoForTest = {
          "width": res.width,
          "height": res.height,
          "path": res.path.slice(res.path.indexOf('static/') + 'static/'.length),
          "orientation": res.orientation,
          "type": res.type
        };
      },
      fail: (err) => {
        uni.showModal({
          title: "获取图片信息失败",
          content: JSON.stringify(err),
          showCancel: false
        });
        testState.imageInfoForTest = null;
      }
    });
    uni.getImageInfo({
      src: remoteImagePath.value,
      success: (res) => {
        console.log("getImageInfo success", JSON.stringify(res));
        remoteImageInfo.value = `图片宽度: ${res.width}\n图片高度: ${res.height}\n图片路径: ${res.path}\n图片方向: ${res.orientation}\n图片格式: ${res.type}`;
      },
      fail: (err) => {
        uni.showModal({
          title: "获取图片信息失败",
          content: JSON.stringify(err),
          showCancel: false
        });
      }
    });
  })

  defineExpose({
    testState,
    chooseImage
  })
</script>

<style>
  .image {
    align-self: center;
  }

  .margin-top-10 {
    margin-top: 10px;
  }
</style>

:::

通用类型

GeneralCallbackResult

名称类型必备默认值兼容性描述
errMsgstring-Web: -; 微信小程序: 4.41; Android: -; iOS: -; HarmonyOS: -错误信息