実現したいこと
初めて質問します。
よろしくお願いします。
const ctx = document.getElementById("canvas").getContext("2d");
dataText = "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18"
const splText = String(dataText).split(",");
let rgb = 0;
for (let i = 0; i < 6; i++) {
for (let j = 0; j < 6; j++) {
const r = splText [rgb];
const g = splText [(rgb + 1)];
const b = splText [(rgb + 2)];
ctx.beginPath();
ctx.fillStyle = "rgb(" + Number(r) + "," + Number(g) + "," + Number(b) + ")";
ctx.fillRect(j * 1, i * 1, 1, 1);
ctx.stroke();
rgb = rgb + 3;
}
}
で、dataText(数値は例) で指定した数値で塗りつぶしたいです。
発生している問題・分からないこと
//追記部分で取得した色(rgb)が fillStyle で塗りつぶした色(rgb数値)と違う時がある。
firefoxでしか検証していないのですが、
dataText でrgb(1,2,3)となっているのに取得した色はrgb(1,2,3)ではない数値になったりもします。
数値が変わってしまうのはどこのコードに問題があるのでしょうか。
それとも何かコードが足りていないのでしょうか。
該当のソースコード
const ctx = document.getElementById("canvas").getContext("2d"); dataText = "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18" const splText = String(dataText).split(","); let rgb = 0; for (let i = 0; i < 6; i++) { for (let j = 0; j < 6; j++) { const r = splText [rgb]; const g = splText [(rgb + 1)]; const b = splText [(rgb + 2)]; ctx.beginPath(); ctx.fillStyle = "rgb(" + Number(r) + "," + Number(g) + "," + Number(b) + ")"; ctx.fillRect(j * 1, i * 1, 1, 1); ctx.stroke(); //追記部分 window.alert(Number(r) + "," + Number(g) + "," + Number(b)); ctx.beginPath(); const dataTest1 = ctx.getImageData(j * 1, i * 1, 1, 1); const dataTest2 = dataTest1.data; const dataTest3 = String(dataTest2).split(",", 3); window.alert(dataTest3); // rgb = rgb + 3; } }
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
いろいろ調べて試してみたのですが、違う数値がが出ることを解決できませんでした。
補足
特になし