/*
|
* @Author: GuLiMmo 2820890765@qq.com
|
* @Date: 2024-05-21 10:14:11
|
* @LastEditors: GuLiMmo 2820890765@qq.com
|
* @LastEditTime: 2024-05-21 10:20:34
|
* @FilePath: /bigScreen/src/utils/cesium/compressImage2.js
|
* @Description:
|
* Copyright (c) 2024 by GuLiMmo, All Rights Reserved.
|
*/
|
export default function compressImage(
|
src,
|
maxWidth,
|
maxHeight,
|
outputFormat = 'image/jpeg',
|
quality = 0.7
|
) {
|
return new Promise((resolve, reject) => {
|
const image = new Image()
|
image.setAttribute('crossOrigin', 'Anonymous')
|
image.src = src
|
image.onload = () => {
|
let width = image.width
|
let height = image.height
|
|
if (width > maxWidth) {
|
height *= maxWidth / width
|
width = maxWidth
|
}
|
|
if (height > maxHeight) {
|
width *= maxHeight / height
|
height = maxHeight
|
}
|
|
const canvas = document.createElement('canvas')
|
canvas.width = width
|
canvas.height = height
|
const ctx = canvas.getContext('2d')
|
ctx.drawImage(image, 0, 0, width, height)
|
|
const newDataUrl = canvas.toDataURL(outputFormat, quality)
|
resolve(newDataUrl)
|
}
|
image.onerror = reject
|
})
|
}
|