Canvasを使用して画像ダウンロード機能を実装するHTML5の詳細例

巴扎黑
リリース: 2017-09-02 10:01:55
オリジナル
3249 人が閲覧しました

この記事では主に、キャンバスを使用して画像ダウンロード機能を実装するためのサンプルコードを紹介します。必要な方は参考にしてください。

最近のプロジェクトでは、画像をダウンロードする機能が必要です。 (以下に示すように) 実装されました

最初は、a タグの download 属性を使用してダウンロードすることを検討しました:


<a href="图片src" download="下载海报">
下载海报
</a>
ログイン後にコピー

しかし、テストを通じて、Safari ではダウンロードされたファイルに拡張子を付けることができないことがわかりました。そこで、考えを変えて、処理にキャンバスを使用する必要がありました。

1. 画像にcrossOrigin='anonymous'を追加して、画像のクロスドメイン属性を設定する必要があります


img.crossOrigin = &#39;anonymous&#39;;
ログイン後にコピー

2. toDataURLを使用して画像をbase64形式に変換します


canvas.toDataURL("image/png")
ログイン後にコピー

3.ダウンロードをトリガーするシミュレートされたクリック イベント


 var save_link = document.createElement(&#39;a&#39;);
     save_link.href = image;
     save_link.download =&#39;测试.png&#39;;
                           
 var clickevent = document.createEvent(&#39;MouseEvents&#39;);
     clickevent.initEvent(&#39;click&#39;, true, false);
     save_link.dispatchEvent(clickevent);
ログイン後にコピー

完全なコード:


var canvas = $('.canvas');
var cxt = canvas[0].getContext("2d");
function save(){
    var img = new Image();
    img.crossOrigin = &#39;anonymous&#39;;
    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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート