tt.compressImage
收藏
我的收藏

基础库 1.28.0 开始支持本方法,这是一个异步方法。

压缩图片接口,可选压缩质量,并可以产出压缩后的图片到本地临时文件。仅对 jpg 格式图片有效。

前提条件
业务背景
使用限制
注意事项
支持沙盒
相关教程

语法

tt.compressImage(options)

参数说明

options 为 object 类型,属性如下:

属性名类型默认值必填说明最低支持版本
qualitynumber80
压缩质量,范围 0 ~ 100,数值越小,质量越低,压缩率越高
1.28.0
srcstring | array

图片路径

1.28.0
successfunction
接口调用成功的回调函数
1.28.0
failfunction
接口调用失败的回调函数
1.28.0
completefunction
接口调用结束的回调函数(调用成功、失败都会执行)
1.28.0

src 参数说明

src 可以是本地路径、代码包相对路径,但不支持网络图片。基础库 2.48.0 版本之后,支持传入路径数组,批量压缩图片。当批量压缩时:

  1. 如果批量压缩全部失败,会进入 fail 回调。
  2. 如果批量压缩部分压缩成功、部分压缩失败,则会进入 success 回调,压缩失败的图片返回空字符串。

回调成功

object 类型,属性如下:

属性名类型说明最低支持版本
errMsgstring
"compressImage:ok"
1.28.0
tempFilePathstring | array
压缩完成后的文件的临时路径
1.28.0

回调失败

object 类型,属性如下:

属性名类型说明最低支持版本
errMsgstring
"compressImage:fail" + 详细错误信息
1.28.0

错误码

errorCodeerrMsgerrorType说明最低支持版本
112199params src is requiredsrc is invalidparams src type is not string typeD
src 为空src 传入单个不存在的路径,或不支持http://、https://开头的图片资源参数 src 不是 string 类型,或 src 数组内容不是 string 类型
1.28.0
112105sandbox is nilF
小程序框架内部错误,有需要请拉客服咨询
1.28.0
112104batch compress images failD
批量压缩失败
1.28.0
112103permission denied, read {filePath}D
传入了非法路径
1.28.0
112101no such file or directory {filePath}D
传入了不存在的路径
1.28.0
112102decode image failD
传入的路径非图片解码失败,文件格式错误等
1.28.0
112106compress image failF
小程序框架内部错误,有需要请拉客服咨询
1.28.0
112107write image to file failF
小程序框架内部错误,有需要请拉客服咨询
1.28.0
112199params src is requiredD
参数src不能为空
1.28.0
112199params src type is not string typeD
参数src不是 string 类型,或src数组内容不是 string 类型
1.28.0
112191Internal error: cause: $cause, errMsg: $extraMsgF
小程序框架内部错误,有需要请拉客服咨询
1.28.0

扫码体验

请使用字节宿主APP扫码

代码示例

开发者工具中预览

<!-- index.ttml -->
<view class="wrap">
  <button type="primary" bindtap="compressImage">点击选择图片压缩</button>
  <view>压缩前:</view>
  <image class="image" src="{{oldSrc}}"></image>
  <view>压缩后:</view>
  <image class="image" src="{{newSrc}}"></image>
</view>
// index.js
Page({
  data: {
    oldSrc: "",
    newSrc: "",
  },
  compressImage() {
    tt.chooseImage({
      success: (res) => {
        this.setData({
          oldSrc: res.tempFilePaths[0],
        });
        tt.compressImage({
          src: res.tempFilePaths[0],
          quality: 80,
          success: (res) => {
            tt.showToast({ title: "压缩成功" });
            this.setData({
              newSrc: res.tempFilePath,
            });
          },
          fail: (err) => {
            tt.showModal({
              title: "压缩失败",
              content: err.errMsg,
              showCancel: false,
            });
          },
          complete: (res) => {
            console.log("压缩完成");
          },
        });
      },
      fail: (err) => {
        tt.showModal({
          title: "选择图片失败",
          content: err.errMsg,
          showCancel: false,
        });
      },
    });
  },
});