1. 定义一个 将图片转换成 base64 格式的 hook
import { onMounted } from "vue"
type Options = {
el: string
}
export default function (options: Options): Promise<{ baseUrl: string }> {
return new Promise((resolve) => {
onMounted(() => {
let img: HTMLImageElement = document.querySelector(options.el) as HTMLImageElement
console.log(img)
img.onload = () => {
resolve({
baseUrl: base64(img)
})
}
})
const base64 = (el: HTMLImageElement) => {
const canvas = document.createElement('canvas')
const ctx = canvas.getContext('2d')
canvas.width = el.width
canvas.height = el.height
ctx?.drawImage(el, 0, 0, canvas.width, canvas.height)
return canvas.toDataURL('imgs/jpg', 0.8)
}
})
}
其中 drawImage 接收的参数如下

- 使用上面定义的 hook
<template>
<img id="img" src="./assets/imgs/img1.jpg" alt="">
</template>
<script setup lang="ts">
import useBase64 from './hooks/base64'
useBase64({el: '#img'}).then(res => {
console.log(res.baseUrl)
})
</script>
<style scoped>
</style>