From 630692b507a29f266c7eeae395c33048f1d0e4ee Mon Sep 17 00:00:00 2001 From: alikia2x Date: Sun, 3 Nov 2024 00:42:05 +0800 Subject: [PATCH] fix: when cover resolution too low, image on the UI won't fill the container improve: adjust margin of cover and interactiveBox --- packages/core/components/cover.svelte | 3 +- .../core/components/interactiveBox.svelte | 2 +- .../src/routes/play/[id]/+page.svelte | 44 +++++++++++++++++-- .../web/src/routes/play/[id]/+page.svelte | 42 ++++++++++++++++-- 4 files changed, 82 insertions(+), 9 deletions(-) diff --git a/packages/core/components/cover.svelte b/packages/core/components/cover.svelte index 6767845..325788b 100644 --- a/packages/core/components/cover.svelte +++ b/packages/core/components/cover.svelte @@ -12,8 +12,9 @@ {#if hasLyrics} 封面 {:else} diff --git a/packages/core/components/interactiveBox.svelte b/packages/core/components/interactiveBox.svelte index 843216d..2c74559 100644 --- a/packages/core/components/interactiveBox.svelte +++ b/packages/core/components/interactiveBox.svelte @@ -78,7 +78,7 @@ {/if}
- + diff --git a/packages/web/src/routes/play/[id]/+page.svelte b/packages/web/src/routes/play/[id]/+page.svelte index 75e9600..70d1fc7 100644 --- a/packages/web/src/routes/play/[id]/+page.svelte +++ b/packages/web/src/routes/play/[id]/+page.svelte @@ -81,10 +81,46 @@ }); localforage.getItem(`${audioId}-cover`, function (err, file) { if (file) { - const path = URL.createObjectURL(file as File); - coverPath.set(path); + const img = new Image(); + img.src = URL.createObjectURL(file as File); + + img.onload = function () { + const canvas = document.createElement('canvas'); + const ctx = canvas.getContext('2d'); + + // 计算新的宽度和高度,确保宽度至少为1200px + let newWidth = img.width; + let newHeight = img.height; + + console.log(newWidth) + + if (newWidth < 1200) { + newWidth = 1200; + newHeight = (img.height * 1200) / img.width; + } + + canvas.width = newWidth; + canvas.height = newHeight; + + // 绘制放大后的图片到canvas + ctx!.drawImage(img, 0, 0, newWidth, newHeight); + + // 将canvas内容转换为Blob + canvas.toBlob(function (blob) { + const path = URL.createObjectURL(blob!); + coverPath.set(path); + }, 'image/jpeg'); // 你可以根据需要更改图片格式 + + prepared.push('cover'); + }; + + img.onerror = function () { + console.error('Failed to load image'); + prepared.push('cover'); + }; + } else { + prepared.push('cover'); } - prepared.push('cover'); }); localforage.getItem(`${audioId}-file`, function (err, file) { if (audioPlayer === null) return;