feat(home-banner): 轮播支持 PC/移动两端分图与热区跳转,热区图悬浮放大;修复上传压缩压白透明 PNG

This commit is contained in:
yml2213
2026-10-16 16:02:29 +08:00
parent b5867e3c5e
commit 9f8c0f9cb2
21 changed files with 2217 additions and 272 deletions
@@ -0,0 +1,32 @@
import { describe, expect, it } from 'vitest'
import { resolveUploadEncoding } from './imageUpload'
describe('resolveUploadEncoding', () => {
it('带透明通道的图必须输出 PNG,避免透明区域被压成实色', () => {
const encoding = resolveUploadEncoding('home-banner', true)
expect(encoding.outputType).toBe('image/png')
expect(encoding.extension).toBe('png')
expect(encoding.maxSide).toBe(1920)
expect(encoding.quality).toBe(0.84)
})
it('不透明图继续用 WebP 压缩', () => {
const encoding = resolveUploadEncoding('home-banner', false)
expect(encoding.outputType).toBe('image/webp')
expect(encoding.extension).toBe('webp')
})
it('未登记的 scene 使用兜底参数', () => {
const encoding = resolveUploadEncoding('unknown-scene', false)
expect(encoding.maxSide).toBe(1600)
expect(encoding.quality).toBe(0.82)
})
it('头像等小尺寸场景保留各自的边长上限', () => {
expect(resolveUploadEncoding('avatar', false).maxSide).toBe(512)
expect(resolveUploadEncoding('qrcode', true).maxSide).toBe(2560)
})
})