diff --git a/src/views/CharacterDetailView.vue b/src/views/CharacterDetailView.vue index 5a78ce5..e92947b 100644 --- a/src/views/CharacterDetailView.vue +++ b/src/views/CharacterDetailView.vue @@ -64,6 +64,34 @@ const handleUseInGeneration = () => { bulkSelectedAssetIds.value = [] } +const downloadImage = (url, name) => { + fetch(url) + .then(response => response.blob()) + .then(blob => { + const blobUrl = window.URL.createObjectURL(blob); + const link = document.createElement('a'); + link.href = blobUrl; + link.download = name || 'image.webp'; + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); + window.URL.revokeObjectURL(blobUrl); + }) + .catch(e => console.error('Download failed', e)); +} + +const handleDownloadResults = () => { + if (!generatedResult.value) return + + if (generatedResult.value.type === 'assets') { + generatedResult.value.assets.forEach(asset => { + downloadImage(API_URL + asset.url, asset.name + '.webp') + }) + } else if (generatedResult.value.type === 'image') { + downloadImage(generatedResult.value.url, 'generated_image.webp') + } +} + const loadData = async () => { loading.value = true const charId = route.params.id @@ -570,7 +598,8 @@ const handleLogout = () => {