回答編集履歴
1
他の問題点を追記
answer
CHANGED
@@ -51,4 +51,17 @@
|
|
51
51
|
noLoop();/////一度やれば十分
|
52
52
|
}
|
53
53
|
```
|
54
|
-
質問も、ソースコード部分を[シンタックスハイライト](https://teratail.com/help/question-tips#questionTips3-5-1)してね。(<code>ボタンの他にもコードの前後を```のみの行で囲っても可)
|
54
|
+
質問も、ソースコード部分を[シンタックスハイライト](https://teratail.com/help/question-tips#questionTips3-5-1)してね。(<code>ボタンの他にもコードの前後を```のみの行で囲っても可)
|
55
|
+
|
56
|
+
---
|
57
|
+
ディザの方、「画素の足し算」のやり方が間違っている。
|
58
|
+
pixels[]から読みだした要素の値は、
|
59
|
+
不透明度*0x1000000+R*0x10000+G*0x100+B (不透明度,R,G,Bはそれぞれ0~255の範囲の整数)
|
60
|
+
例えば、R=G=B=128(灰色)の場合十六進表記すれば
|
61
|
+
0xff808080
|
62
|
+
で、これを同じR=G=B=128と足したとすると
|
63
|
+
0xff010100
|
64
|
+
になって、つまりR=1,G=1,B=0の意。
|
65
|
+
このように、2つの画素値をそのまま足しても画素データとして「足した」意味にはならない。
|
66
|
+
|
67
|
+
グレースケールにしているのだからR/G/Bは同じ値になっているはずなので、例えば代表値としてgreen()を取り出すとか、あるいはbrightness()関数で輝度データを取り出して、それについて演算を行い、0~255の範囲内に収めた上で画素データとして再構成(color()関数が便利)すべき。
|