diff options
| author | Kagami Sascha Rosylight <saschanaz@outlook.com> | 2022-12-18 15:40:38 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-12-18 15:40:38 +0900 |
| commit | a47d172d60b1ae712738e0ba5dfbb6b81be3f809 (patch) | |
| tree | 8aeba3a1880507fc6b48458dd3c3632d97185a78 /packages/client/src/scripts/upload | |
| parent | chore: deploy vue-tsc for client typecheck (#9341) (diff) | |
| download | sharkey-a47d172d60b1ae712738e0ba5dfbb6b81be3f809.tar.gz sharkey-a47d172d60b1ae712738e0ba5dfbb6b81be3f809.tar.bz2 sharkey-a47d172d60b1ae712738e0ba5dfbb6b81be3f809.zip | |
enhance(client): Compress non-animated PNG files (#9334)
* style: fix TS lint errors about `ev.target`
* enhance: compress non-animated PNG
* PNG to PNG?
* defer jest things (add it later)
* Delete jest.config.cjs
* check the compressed file size
* log compression stats
* use ??
* handle if ($i == null)
Co-authored-by: tamaina <tamaina@hotmail.co.jp>
Diffstat (limited to 'packages/client/src/scripts/upload')
| -rw-r--r-- | packages/client/src/scripts/upload/compress-config.ts | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/packages/client/src/scripts/upload/compress-config.ts b/packages/client/src/scripts/upload/compress-config.ts new file mode 100644 index 0000000000..793c78ad20 --- /dev/null +++ b/packages/client/src/scripts/upload/compress-config.ts @@ -0,0 +1,23 @@ +import isAnimated from 'is-file-animated'; +import type { BrowserImageResizerConfig } from 'browser-image-resizer'; + +const compressTypeMap = { + 'image/jpeg': { quality: 0.85, mimeType: 'image/jpeg' }, + 'image/png': { quality: 1, mimeType: 'image/png' }, + 'image/webp': { quality: 0.85, mimeType: 'image/jpeg' }, + 'image/svg+xml': { quality: 1, mimeType: 'image/png' }, +} as const; + +export async function getCompressionConfig(file: File): Promise<BrowserImageResizerConfig | undefined> { + const imgConfig = compressTypeMap[file.type]; + if (!imgConfig || await isAnimated(file)) { + return; + } + + return { + maxWidth: 2048, + maxHeight: 2048, + debug: true, + ...imgConfig, + }; +} |