canvasを画像化してダウンロードする処理を作ったのですが、画像化されたファイルを見に行ってみるとバックグランドカラーだけが反映されず困っています。
png形式にすると背景が透明色で保存され、jpegで保存すると背景色が真っ黒で表示されます。
html
1<template> 2 <canvas 3 id="preview" 4 :style="{ 5 border: 'solid 1px #000', 6 'background-color': #ff0000 7 }" 8 > 9 </canvas> 10</template> 11 12//描画処理 13<script> 14export default { 15 mounted() { 16 this.ctx = document.getElementById('preview').getContext('2d') 17 this.drawCreative() 18 }, 19 methods: { 20 drawCreative() { 21 this.ctx.canvas.width = 500 22 this.ctx.canvas.height = 500 23 this.ctx.beginPath() 24 this.ctx.clearRect(0, 0, 500, 500) 25 this.ctx.fill() 26 }, 27 downloadCanvas() { 28 const canvasImage = document.getElementById('preview') 29 const link = document.createElement('a') 30 link.href = canvasImage.toDataURL('image/png') 31 link.download = 'hoge.png' 32 link.click() 33 }, 34 }, 35} 36</script> 37
js
1 downloadCanvas() { 2 const canvasImage = document.getElementById('preview') 3 const link = document.createElement('a') 4 link.href = canvasImage.toDataURL('image/png') 5 link.download ='hoge.png' 6 link.click() 7 },
※今回canvas描画部分の処理は必要ないので省きました
そもそもjpgは透過できないので、仕様と言えば仕様ですがjpgでなくてはいけないということでしょうか
HTMLとして提示されたコードはHTMLではないようですが、何なのでしょうか?
また、どのように描画しているかは重要です(alphaオプションなど)。
mts10806さん
背景色さえ設定できれば大丈夫なので、どの形式でも大丈夫です。
x_xさん
すみません。こちらNuxt.jsのコードです。
canvasがHTMLの機能だったもので、HTMLと書いた方がわかりやすいのかと思ってしまいました。
コード追記します。
どのような画像を採用しているか知りませんが、「透過PNG画像」で解決しませんか?
mts10806さん
質問の仕方が悪くてすみません。
スタイルで設定しているバックグラウンドカラーが反映されてる状態で画像を保存したいといった趣旨の質問です。
現在の状態ではpngで保存するとバックグランドカラーを指定しているのに保存画像をみるとバックグランドが透明になってしまいます。
jpgで保存して保存画像をみるとバックグランドが真っ黒になってしまいます。
質問は編集できるので先のNuxt.jsの件も含めて追記してください。
今追記しましたのでよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー