mirror of
https://git.mirrors.martin98.com/https://github.com/langgenius/dify.git
synced 2025-08-20 21:39:21 +08:00
fix: png avatar upload as jpeg (#8665)
This commit is contained in:
parent
86f90fd9ff
commit
b37954b966
@ -88,7 +88,7 @@ const AppIconPicker: FC<AppIconPickerProps> = ({
|
|||||||
if (!imageCropInfo)
|
if (!imageCropInfo)
|
||||||
return
|
return
|
||||||
setUploading(true)
|
setUploading(true)
|
||||||
const blob = await getCroppedImg(imageCropInfo.tempUrl, imageCropInfo.croppedAreaPixels)
|
const blob = await getCroppedImg(imageCropInfo.tempUrl, imageCropInfo.croppedAreaPixels, imageCropInfo.fileName)
|
||||||
const file = new File([blob], imageCropInfo.fileName, { type: blob.type })
|
const file = new File([blob], imageCropInfo.fileName, { type: blob.type })
|
||||||
handleLocalFileUpload(file)
|
handleLocalFileUpload(file)
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,23 @@ export function getRadianAngle(degreeValue: number) {
|
|||||||
return (degreeValue * Math.PI) / 180
|
return (degreeValue * Math.PI) / 180
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getMimeType(fileName: string): string {
|
||||||
|
const extension = fileName.split('.').pop()?.toLowerCase()
|
||||||
|
switch (extension) {
|
||||||
|
case 'png':
|
||||||
|
return 'image/png'
|
||||||
|
case 'jpg':
|
||||||
|
case 'jpeg':
|
||||||
|
return 'image/jpeg'
|
||||||
|
case 'gif':
|
||||||
|
return 'image/gif'
|
||||||
|
case 'webp':
|
||||||
|
return 'image/webp'
|
||||||
|
default:
|
||||||
|
return 'image/jpeg'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the new bounding area of a rotated rectangle.
|
* Returns the new bounding area of a rotated rectangle.
|
||||||
*/
|
*/
|
||||||
@ -31,12 +48,14 @@ export function rotateSize(width: number, height: number, rotation: number) {
|
|||||||
export default async function getCroppedImg(
|
export default async function getCroppedImg(
|
||||||
imageSrc: string,
|
imageSrc: string,
|
||||||
pixelCrop: { x: number; y: number; width: number; height: number },
|
pixelCrop: { x: number; y: number; width: number; height: number },
|
||||||
|
fileName: string,
|
||||||
rotation = 0,
|
rotation = 0,
|
||||||
flip = { horizontal: false, vertical: false },
|
flip = { horizontal: false, vertical: false },
|
||||||
): Promise<Blob> {
|
): Promise<Blob> {
|
||||||
const image = await createImage(imageSrc)
|
const image = await createImage(imageSrc)
|
||||||
const canvas = document.createElement('canvas')
|
const canvas = document.createElement('canvas')
|
||||||
const ctx = canvas.getContext('2d')
|
const ctx = canvas.getContext('2d')
|
||||||
|
const mimeType = getMimeType(fileName)
|
||||||
|
|
||||||
if (!ctx)
|
if (!ctx)
|
||||||
throw new Error('Could not create a canvas context')
|
throw new Error('Could not create a canvas context')
|
||||||
@ -93,6 +112,6 @@ export default async function getCroppedImg(
|
|||||||
resolve(file)
|
resolve(file)
|
||||||
else
|
else
|
||||||
reject(new Error('Could not create a blob'))
|
reject(new Error('Could not create a blob'))
|
||||||
}, 'image/jpeg')
|
}, mimeType)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user