feat(base): client-side image compression in ImageUploadService
Optional opt-in resize + re-encode of files before the pict-rs POST, behind a new `compress` option on ImageUploadOptions / `<ImageUpload :compress>` prop. Pict-rs stores originals at full resolution forever and `process.webp?resize=…` URLs only shape *delivery* — without compression, a 5–8 MB phone photo lands on disk untouched. Defaults when enabled: 1920 px max edge, WebP, q=0.85, target ~1 MB, Web Worker. Skips compression for files already comfortably under the size target, and keeps the original if re-encoding would make it larger. Uses browser-image-compression (MIT, ~50 KB, mature) — handles EXIF orientation internally (canvas drawImage doesn't auto-rotate, which is the classic "portrait photo lands sideways" bug we'd otherwise own) and falls back gracefully on encoder failure (HEIC, etc.). Default is `compress: false` so existing market and profile call sites keep current behavior; rollout tracked in #59. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
691f8df830
commit
16608e0d60
4 changed files with 128 additions and 18 deletions
|
|
@ -48,6 +48,7 @@
|
|||
"@vueuse/components": "^12.5.0",
|
||||
"@vueuse/core": "^12.8.2",
|
||||
"@vueuse/integrations": "^13.6.0",
|
||||
"browser-image-compression": "^2.0.2",
|
||||
"class-variance-authority": "^0.7.1",
|
||||
"clsx": "^2.1.1",
|
||||
"date-fns": "^4.1.0",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue