Image url generator
Components like lazy load/progressive load/response load/auto webp, etc. need to be used with the image link generator function ImageUrlGenerator
, which receives different image parameters in different situations. According to the image parameter, the image URL
needed by the corresponding image service is generated, and the corresponding image is finally obtained by this image URL
.
Usage
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>
Built-in image link generation function
fastly
import { imageUrlGeneratorFastly } from '@awesome-image/services'
imagekit
import { imageUrlGeneratorImagekit } from '@awesome-image/services'
upyun
import { imageUrlGeneratorUpyun } from '@awesome-image/services'
Custom image url generation function
You can easily write your own image url generator, and feel free to submit your image provider's function to @awesome-image/services
Interface
export interface ImageOptions {
width?: number
height?: number
blur?: number
quanlity?: number
format?: string
}
export interface ImageUrlGenerator {
(url: string, options: ImageOptions): string
}
Function parameter
When used, the component passes different parameters to the ImageUrlGenerator
to generate the corresponding image url
progressive
Options used to generate the blured thumbnail
const imageOptions = {
width: 48,
blur: 5
}
For example
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
Options used to generate the different sizes required for the response, the width of which is generated based on the breakpoints
property
const imageOptions = {
// other options
width: 640, // according to breakpoints
}
format
Options for format
property
const imageOptions = {
// other options
format: 'png',
}
quanlity
Options for quanlity
property
const imageOptions = {
// other options
quanlity: 90, // according to `quanlity` props
}
auto-webp
Options for auto-webp
property
const imageOptions = {
// other options
format: 'webp',
}
other
TODO
Example
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