12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- export function urlToBase64(url: string, mineType?: string): Promise<string> {
- return new Promise((resolve, reject) => {
- let canvas = document.createElement('CANVAS') as Nullable<HTMLCanvasElement>
- const ctx = canvas!.getContext('2d')
-
- const img = new Image()
- img.crossOrigin = ''
- img.onload = function () {
- if (!canvas || !ctx) {
- return reject()
- }
- canvas.height = img.height
- canvas.width = img.width
- ctx.drawImage(img, 0, 0)
- const dataURL = canvas.toDataURL(mineType || 'image/png')
- canvas = null
- resolve(dataURL)
- }
- img.src = url
- })
- }
- /**
- * 将文件对象转换为base64格式
- * @param file 文件对象,通常来自input[type="file"]的选择
- * @returns Promise<string> 返回base64格式的字符串
- */
- export function fileToBase64(file: File): Promise<string> {
- return new Promise((resolve, reject) => {
- if (!file) {
- reject(new Error('文件不能为空'))
- return
- }
- // 验证是否为图片文件
- if (!file.type.startsWith('image/')) {
- reject(new Error('请上传图片文件'))
- return
- }
- const reader = new FileReader()
- reader.readAsDataURL(file)
-
- reader.onload = () => {
- resolve(reader.result as string)
- }
-
- reader.onerror = (error) => {
- reject(error)
- }
- })
- }
|