BOYYANG/1/blog/电锯人 红色头发女孩 4k壁纸 3840_2160_彼岸图网

前端图片下载

作者: boyyang
分类: 前端开发
发布: 2024-04-08 08:33:18
更新: 2025-03-23 11:55:51
浏览: 82

       使用canvas下载网络图片:

/**
 * @description 根据图片链接本地下载图片
 * @param {string} url //下载图片地址
 * @param {string} name // 下载图片名称
 * */
const imageDownload = (url: string, name: string): Promise<boolean> => {
    return new Promise(resolve => {
        const link = document.createElement('a')
        link.setAttribute('download', name)
        const image = new Image()
        // 添加时间戳,防止浏览器缓存图片
        image.src = `${url}?timestamp=${new Date().getTime()}`
        // 设置 crossOrigin 属性,解决图片跨域报错
        image.setAttribute('crossOrigin', 'Anonymous')
        image.onload = () => {
            link.href = getImageBase64(image)
            link.click()
            resolve(true)
        }
    })
}


const getImageBase64 = (image: HTMLImageElement) => {
    const canvas = document.createElement('canvas')
    canvas.width = image.width
    canvas.height = image.height
    const ctx = canvas.getContext('2d')
    ctx?.drawImage(image, 0, 0, image.width, image.height)
    // 获取图片后缀名
    const extension = image.src.substring(image.src.lastIndexOf('.') + 1).toLowerCase()
    // 某些图片 url 可能没有后缀名,默认是 png
    return canvas.toDataURL(`image/${extension}`, 1)
}

export {imageDownload}


#vue3
#前端
#图片下载