以下のJavaScriptですが、ファイルをtest.htmlの名前で保存して、同じデイレクトりにpic.jpg
を置いて、test.htmlをクリックして立ち上げると、window.onload のctx.drawImage(picImg, 0, 0);
までは上手くいって、元のpic.jpgはcanvasに表示されるのですが、何故か、var pixels = ctx.getImageData(0, 0, picImg.width, picImg.height);以降のJavaScript文が実行されません。(この部分で取り込んだpic.jpgの書き換えを行っています。)原因として何が考えられるでしょうか?
<html>
<head>
<title>List 5</title>
<script type = "text/javascript">
var picImg = document.createElement("img");
picImg.src = "pic.jpg";
window.onload = function() {
var ctx = document.getElementById("mycanvas").getContext("2d");
ctx.drawImage(picImg, 0, 0);
var pixels = ctx.getImageData(0, 0, picImg.width, picImg.height);
for(var y=0; y<pixels.height; y++) {
for(var x=0; x<pixels.width; x++) {
var r = pixels.data[(y * pixels.width + x) * 4]; // R
var g = pixels.data[(y * pixels.width + x) * 4 + 1]; // G
var b = pixels.data[(y * pixels.width + x) * 4 + 2]; // B
var gray = 0.298912 * r + 0.586611 * g + 0.114478 * b;
pixels.data[(y * pixels.width + x) * 4] = gray;
pixels.data[(y * pixels.width + x) * 4 + 1] = gray * 0.7;
pixels.data[(y * pixels.width + x) * 4 + 2] = gray * 0.4;
}
}
ctx.putImageData(pixels, 0, 0);
};
</script>
</head>
<body>
<canvas id="mycanvas" width="800" height="800"></canvas>
</body>
</html>
No.3ベストアンサー
- 回答日時:
cross-origin dataのエラーっぽいです。
たぶんですが、ローカルで表示しているからではないかと思います。
ウェブサーバー上に置いた場合はどのようになりますでしょうか。
Uncaught DOMException: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The canvas has been tainted by cross-origin data.
at window.onload (test.html:11:18)
No.4
- 回答日時:
No.3:追記
Chromeでしたら、[F12]キーを押すか、表示エリアで右クリックして[検証]をクリックすると、デバッグ的なツールが表示できます。その[Console]にエラーが表示されます。変数の中身を見たり、ブレークポイントも付けられますので、HTML/CSS/JavaScriptのデバッグができます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- JavaScript 【jquery】EasyUIのSubGridにMySQLのテーブルデータを表示&編集にしたい 5 2022/05/02 13:10
- JavaScript javascriptで変数を組み込みたい 2 2023/01/13 09:52
- JavaScript ソースコードのいじる場所が分かりません。 1 2022/12/23 02:06
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- JavaScript GoogleChart 階層ごとのブロックの長さを個別に設定したい 1 2022/07/06 14:27
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
google apps scriptの終了のさせ方
-
javascriptでのURLの引数
-
jqGridについて
-
javascriptでiframeのURL変更は?
-
GASでundefinedエラーが出ます
-
javascriptエラーの解決策について
-
今年を取得する方法はありますか?
-
ASP.NET MVCでObjectをjsに渡す
-
JavaScriptで決まった「時刻」...
-
JavaScript でのリアルタイム時...
-
firefox だけ専用のCSSを表示さ...
-
$("body").height();と$("body"...
-
関数でy=g(x)のgとは何の略です...
-
C#テキストボックスの文字を配...
-
要素名がスペースを含む場合のj...
-
任意の座標をクリックさせるには
-
VBAのIE操作でframe構造のサイ...
-
TexでΣの添え字の位置直し
-
jQueryの"return false"の役割...
-
DIV内のDIV要素を移動する。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
google apps scriptの終了のさせ方
-
C#OpenCv V4にのエラーに関する...
-
javaScriptのコードの修正をお...
-
ジェネレーターの作り方
-
翌月を取得するGASが分かりません
-
ASP.NETのコントロールの値をJa...
-
GASでundefinedエラーが出ます
-
C#で、ContextMenuStripに動的...
-
GASでGoogleフォームの自動返信...
-
VSCODE[Python]の設定について
-
ASP.NET MVCでObjectをjsに渡す
-
C# 演算 奇数と偶数 表現の仕方
-
javascriptでiframeのURL変更は?
-
イベントが初めの一回しか起き...
-
なぜmatchメソッドがエラーにな...
-
jqGridについて
-
gas スプレッドシートがアクテ...
-
JavaScriptで文字列の特定文字...
-
googleスプレッドシートのApps ...
-
var exports = exports || {}; ...
おすすめ情報
http://localhost下で動きました。
ありがとうございました。
ちなみに、ご指摘のエラーはどのコマンドで見るこができるのでしょうか?