回答編集履歴

1

コード修正

2019/05/02 08:34

投稿

can110
can110

スコア38233

test CHANGED
@@ -3,6 +3,8 @@
3
3
  コードにすると以下のような感じになるでしょうか。
4
4
 
5
5
  ```Python
6
+
7
+
6
8
 
7
9
  from PIL import Image
8
10
 
@@ -12,7 +14,7 @@
12
14
 
13
15
 
14
16
 
15
- img = Image.open(r"test.bmp")
17
+ img = Image.open(r"lena.png") # http://optipng.sourceforge.net/pngtech/img/lena.html
16
18
 
17
19
  #インデックスカラーに変換
18
20
 
@@ -23,6 +25,12 @@
23
25
  # カラーパレットにアクセスする。
24
26
 
25
27
  palette = img.getpalette()
28
+
29
+
30
+
31
+ # リストの値は index=0 から順番に [R, G, B, R, G, B, ...]
32
+
33
+ palette = np.array(palette).reshape(-1, 3)
26
34
 
27
35
 
28
36
 
@@ -38,15 +46,17 @@
38
46
 
39
47
  # パレット数の変更
40
48
 
41
- N_COLOR = len(palette) - 100 # 適当な数に減らす
49
+ N_COLOR = len(palette)-100 # 適当な数に減らす
42
50
 
43
51
  palette = palette[:N_COLOR]
44
52
 
45
53
 
46
54
 
55
+ # パレットの更新
56
+
57
+ palette = palette.reshape(-1).tolist()
58
+
47
59
  img.putpalette(palette)
48
-
49
-
50
60
 
51
61
 
52
62
 
@@ -66,6 +76,8 @@
66
76
 
67
77
  img.putdata(data)
68
78
 
69
- img.save('ret.bmp')
79
+ img.save('ret.png')
70
80
 
71
81
  ```
82
+
83
+ ![イメージ説明](28b34d5ee07fc86d59baffaa02689549.png)