この記事では主に、キャンバスを使用して画像ダウンロード機能を実装するためのサンプルコードを紹介します。必要な方は参考にしてください。
最近のプロジェクトでは、画像をダウンロードする機能が必要です。 (以下に示すように) 実装されました
最初は、a タグの download 属性を使用してダウンロードすることを検討しました:
<a href="图片src" download="下载海报"> 下载海报 </a>
しかし、テストを通じて、Safari ではダウンロードされたファイルに拡張子を付けることができないことがわかりました。そこで、考えを変えて、処理にキャンバスを使用する必要がありました。
1. 画像にcrossOrigin='anonymous'を追加して、画像のクロスドメイン属性を設定する必要があります
img.crossOrigin = 'anonymous';
2. toDataURLを使用して画像をbase64形式に変換します
canvas.toDataURL("image/png")
3.ダウンロードをトリガーするシミュレートされたクリック イベント
var save_link = document.createElement('a'); save_link.href = image; save_link.download ='测试.png'; var clickevent = document.createEvent('MouseEvents'); clickevent.initEvent('click', true, false); save_link.dispatchEvent(clickevent);
完全なコード:
var canvas = $('.canvas'); var cxt = canvas[0].getContext("2d"); function save(){ var img = new Image(); img.crossOrigin = 'anonymous'; img.onload = function(){ var _w = img.naturalWidth; var _h = img.naturalHeight; canvas.attr({width:_w,height:_h}); cxt.drawImage(img,0,0); var image = canvas[0].toDataURL("image/png") var save_link = document.createElement('a'); save_link.href = image; save_link.download ='测试.png'; var clickevent = document.createEvent('MouseEvents'); clickevent.initEvent('click', true, false); save_link.dispatchEvent(clickevent); }; img.src = 'http://n.sinaimg.cn/sports/transform/20170825/NZI3- fykiufe6650492.jpg'; }
以上がCanvasを使用して画像ダウンロード機能を実装するHTML5の詳細例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。