teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

リファクタリングした

2019/10/25 06:33

投稿

takabosoft
takabosoft

スコア8356

answer CHANGED
@@ -20,4 +20,50 @@
20
20
 
21
21
  書き込んでいる座標が違うのものおかしいです。
22
22
 
23
- > img[i][j].r = rr;
23
+ > img[i][j].r = rr;
24
+
25
+ ----
26
+
27
+ リファクタリングしたコードを載せておきます。
28
+
29
+ ```cpp
30
+ void bmp_mosaic(bmp_header_t *hd, pixel_t img[MAX_Y][MAX_X]) {
31
+
32
+ int x, y, dx, dy;
33
+ unsigned int r, g, b;
34
+ int size = 16;
35
+ int pixelCount;
36
+
37
+ for (y = 0; y < hd->biHeight; y += size) {
38
+ for (x = 0; x < hd->biWidth / 2; x += size) {
39
+
40
+ r = 0;
41
+ g = 0;
42
+ b = 0;
43
+ pixelCount = 0;
44
+
45
+ for (dy = 0; dy < size && y + dy < hd->biHeight; dy++) {
46
+ for (dx = 0; dx < size && x + dx < hd->biWidth; dx++) {
47
+ r += img[y + dy][x + dx].r;
48
+ g += img[y + dy][x + dx].g;
49
+ b += img[y + dy][x + dx].b;
50
+ pixelCount++;
51
+ }
52
+ }
53
+
54
+ r /= pixelCount;
55
+ g /= pixelCount;
56
+ b /= pixelCount;
57
+
58
+ for (dy = 0; dy < size && y + dy < hd->biHeight; dy++) {
59
+ for (dx = 0; dx < size && x + dx < hd->biWidth; dx++) {
60
+ img[y + dy][x + dx].r = r;
61
+ img[y + dy][x + dx].g = g;
62
+ img[y + dy][x + dx].b = b;
63
+ }
64
+ }
65
+
66
+ }
67
+ }
68
+ }
69
+ ```