All files ImageUtil.ts

0% Statements 0/19
0% Branches 0/12
0% Functions 0/1
0% Lines 0/19

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76                                                                                                                                                       
/**
 * this util module is about to provide support for image related functions
 * @module angle-util/imageUtil
 */
 
export interface ImageParams {
  size?: number // 图片尺寸宽度,数字类型。不传默认图片尺寸是上传图片的原尺寸
  prefix?: 'https' | 'http' // 地址前缀,字符类型。不传地址前缀默认是https,如需特殊控制传入需修改的前缀
  hq?: boolean // 图片高质量,默认false会返回原图片70%压缩质量图片,设置为true则会返回无压缩质量图片
  format?: string // 图片格式,默认"auto"会返回原图片格式,可指定其他格式,例如webp, jpg, png等,根据具体场景选择
  domain?: 'prod' | 'test' // 环境,字符类型。不传默认环境使用prod生产环境
}
 
export default {
  /**
   * 通过图片id获取图床图片地址
   * @author youngbeen
   * @param { string } sImgId - 图片id
   * @param { object } [params] - [配置参数]
   * @param { number } [params.size] - 图片尺寸,数字类型。不传默认图片尺寸是上传图片的原尺寸
   * @param { string } [params.prefix] - 地址前缀,字符类型。不传地址前缀默认是https,如需特殊控制传入需修改的前缀
   * @param { string } [params.hq] - 图片高质量,默认false会返回原图片70%压缩质量图片,设置为true则会返回无压缩质量图片
   * @param { string } [params.format] - 图片格式,默认"auto"会返回原图片格式,可指定其他格式,例如webp, jpg, png等,根据具体场景选择
   * @param { string } [params.domain] - 环境,字符类型。不传默认环境使用生产环境(图床图片一般不分生产跟sit)
   * @return { string } 图片url字符串或空字符串
   * @example
   * // 获取默认配置图片
   * imageUtil.getImageUrl('T17SdTB_Wj1RCvBVdK')
   * @example
   * imageUtil.getImageUrl('T17SdTB_Wj1RCvBVdK', {
   *   size: 400,  // 宽度400像素
   *   prefix: 'http',  // 前缀定为http
   *   format: 'jpg',  // 指定使用jpg格式
   *   hq: true,  // 指定使用无压缩质量图片
   *   domain: 'test'  // 环境设置为sit
   * })
   */
  getImageUrl (sImgId: string, params?: ImageParams): string {
    let size: number = 0
    let prefix: string = 'https'
    let format: string = 'auto'
    let hq: string = '70'
    let domain: string = ''
 
    if (params) {
      // 用户传入了配置参数
      if (params.size) {
        size = params.size
      }
      if (params.prefix) {
        prefix = params.prefix
      }
      if (params.format) {
        format = params.format
      }
      if (params.hq) {
        hq = '100'
      }
      if (params.domain === 'test') {
        // 测试环境 TODO
        domain = params.domain + '.'
      } else {
        // 生产环境 TODO
      }
    }
 
    // 存在的图片id
    let url: string = ''
 
    url = `${prefix}://timg.${domain}ffan.com/convert/resize/url_${sImgId}/width_${size}/zq_${hq}/tfs/xxx.${format}`
    // https://timg.ffan.com/convert/resize/url_T1_Wh_BQhg1RCvBVdK/width_600/zq_100/tfs/xxx.auto
 
    return url
  }
}