图片链接生成

组件 懒加载 / 渐进加载 / 响应加载 / 自动webp 等功能需要搭配图片链接生成函数 ImageUrlGenerator 使用,ImageUrlGenerator 在不同情况下会接收到不同图片参数,根据图片参数生成对应图片服务所需的图片url,最终获取到对应的图片。

使用方式

main.js
import AsImage from '@awesome-image/image'
import '@awesome-image/image/dist/style.css'
import { imageUrlGeneratorFP } from '@awesome-image/services'

Vue.use(AsImage, {
  imageUrlGenerator: imageUrlGeneratorFP 
})

<script>
import { imageUrlGeneratorFP } from '@awesome-image/services'
export default {
  data() {
    return {
      imageUrlGenerator: imageUrlGeneratorFP
    }
  }
}
</script>
<template>
  <AsImage
    :width="1280"
    :height="640"
    :imageUrlGenerator="imageUrlGeneratorFP"
    src="//cdn.com/image.jpg"
  >
  </AsImage>
</template>

内置图片链接生成函数

fastly

import { imageUrlGeneratorFastly } from '@awesome-image/services'

imagekit

import { imageUrlGeneratorImagekit } from '@awesome-image/services'

upyun

import { imageUrlGeneratorUpyun } from '@awesome-image/services'

自定义图片链接生成函数

你可以很方便的写自己的图片链接生成函数,并且欢迎提交常用的图片服务商对应的函数到 @awesome-image/services

函数接口

export interface ImageOptions {
  width?: number
  height?: number
  blur?: number
  quanlity?: number
  format?: string
}
export interface ImageUrlGenerator {
  (url: string, options: ImageOptions): string
}

函数参数

组件在使用时会在不同情况下传递不同的参数给 ImageUrlGenerator,来生成对应的图片地址

progressive 对应图片参数

用来生成模糊缩略图对应的图片url

const imageOptions = {
  width: 48,
  blur: 5
}

例如

const image = 'https://cdn.com/image.jpg'
const url = yourGenerator(image, imageOptions) 
console.log(url) // https://cdn.com/image.jpg?w=48&b=5

responsive 对应图片参数

用来生成响应式所需的不同尺寸对应的图片url,宽度根据 breakpoints 属性生成

const imageOptions = {
  // other options
  width: 640, // according to breakpoints
}

format 对应图片参数

组件指定 format 属性时会传递的参数

const imageOptions = {
  // other options
  format: 'png',
}

quanlity 对应图片参数

组件指定 quanlity 属性时会传递的参数

const imageOptions = {
  // other options
  quanlity: 90, // according to `quanlity` props
}

auto-webp 对应图片参数

组件使用 auto-webp 属性时会传递的参数

const imageOptions = {
  // other options
  format: 'webp',
}

其他参数

TODO

示例

const imageUrlGeneratorDemo: ImageUrlGenerator
  = (url: string, options: ImageOptions = {}): string =>
{
  const query = Object.entries(options).map(kv => `${kv[0]}=${kv[1]}`)
  return `${url}?${query.join('&')}`
}
// if image url is 'https://cdn.com/image.jpg'

// progressive will generate:
// https://cdn.com/image.jpg?width=48&blur=5

// responsive: true & format: png & quanlity: 80 & breakpoints: [640, 1280] will generate:
// https://cdn.com/image.jpg?width=640&format=png&quanlity=80
// https://cdn.com/image.jpg?width=1280&format=png&quanlity=80

在 GitHub 上编辑本页面 更新时间: Thu, May 19, 2022