前提・実現したいこと
外部サイトからコピーした画像URLを、URL入力フォームにペースト → canvasに描画
という機能をhtml,js(できればjQuery)で実装したいです。
下記動作サンプルです。
サンプル
画像の取得方法は画像URLの他に、ファイルをアップロードする方法も実装しています。
アップロードする方法で取得した画像は、下記URLの方法を参考にして、canvasに描画することができました。
canvasにローカル画像を表示
発生している問題
画像URLから取得した画像を、canvasに描画できていないです。
該当のソースコード
現状は下記のコードで、
画像をURLをフォームにペースト → 表示
という機能を実装しています。
javascript
1$(function () { 2 3 //input url 4 $('#url').change(function () { 5 $('#view_file').fadeOut(1), $('#view_url').fadeIn(1); 6 $('#view_url').prop('src', this.value); 7 console.log(this.value); 8 var url = $('#file')[0]; 9 url.value = ""; 10 }); 11 12});
上記コードを修正して、canvasに描画したいです。
試したこと
下記コードによってアップロードで取得した画像をcanvasに描画できたので、画像URLから取得用にアレンジしようと試みましたが、いかんせん下記コードも外部サイトから引っ張ってきたものなので細かく理解できておらず、上手くいきませんでした。
javascript
1$(function () { 2 3 //input file 4 $('#file').change(function () { 5 $('#view_url').fadeOut(1), $('#view_file').fadeIn(1); 6 var file = this.files[0]; 7 var canvas_file = $('#view_file'); 8 var ctx = canvas_file[0].getContext('2d'); 9 var image = new Image(); 10 var fr = new FileReader(); 11 var url = $('#url')[0]; 12 url.value = ""; 13 fr.onload = function (e) { 14 image.onload = function () { 15 var cnvsH = 240; 16 var cnvsW = image.naturalWidth * cnvsH / image.naturalHeight; 17 canvas_file.attr('width', cnvsW); 18 canvas_file.attr('height', cnvsH); 19 ctx.drawImage(image, 0, 0, cnvsW, cnvsH); 20 } 21 image.src = e.target.result; 22 } 23 fr.readAsDataURL(file); 24 }); 25 26});
回答2件
あなたの回答
tips
プレビュー