feat(member): 회원 썸네일 중앙 1대1 크롭 강제

아바타 업로드 시 원본 비율과 무관하게 중앙 기준 정사각형으로 크롭해 헤더와 설정 화면에서 일관된 1:1 썸네일이 노출되도록 맞춘다.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-05-11 17:29:51 +09:00
parent ede272e7b1
commit a314c96c4d
6 changed files with 21 additions and 8 deletions

View File

@@ -69,6 +69,7 @@ export default defineEventHandler(async (event) => {
const avatarMinHeight = clampNumber(Number(config.avatarMinHeight || 96), 1, 4096)
const avatarMaxWidth = clampNumber(Number(config.avatarMaxWidth || 512), avatarMinWidth, 4096)
const avatarMaxHeight = clampNumber(Number(config.avatarMaxHeight || 512), avatarMinHeight, 4096)
const avatarSquareSize = Math.min(avatarMaxWidth, avatarMaxHeight)
const avatarWebpQuality = clampNumber(Number(config.avatarWebpQuality || 82), 1, 100)
const formData = await readMultipartFormData(event)
const file = (formData || []).find((part) => part.name === 'file' && part.filename)
@@ -126,10 +127,10 @@ export default defineEventHandler(async (event) => {
const resizedBuffer = await sharp(file.data)
.rotate()
.resize({
width: avatarMaxWidth,
height: avatarMaxHeight,
fit: 'inside',
withoutEnlargement: true
width: avatarSquareSize,
height: avatarSquareSize,
fit: 'cover',
position: 'centre'
})
.webp({
quality: avatarWebpQuality