回答編集履歴
3
package 削除
answer
CHANGED
|
@@ -4,8 +4,6 @@
|
|
|
4
4
|
|
|
5
5
|
NamedColor.java
|
|
6
6
|
```java
|
|
7
|
-
package com.teratail.q351712;
|
|
8
|
-
|
|
9
7
|
import android.graphics.Color;
|
|
10
8
|
|
|
11
9
|
enum NamedColor {
|
|
@@ -73,8 +71,6 @@
|
|
|
73
71
|
```
|
|
74
72
|
MainActivity.java
|
|
75
73
|
```java
|
|
76
|
-
package com.teratail.q351712;
|
|
77
|
-
|
|
78
74
|
import androidx.appcompat.app.AppCompatActivity;
|
|
79
75
|
|
|
80
76
|
import android.os.Bundle;
|
2
コードフォーマット微修正
answer
CHANGED
|
@@ -56,9 +56,7 @@
|
|
|
56
56
|
b = Color.blue(rgb);
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
public String getName() {
|
|
59
|
+
public String getName() { return name; }
|
|
60
|
-
return name;
|
|
61
|
-
}
|
|
62
60
|
public Color getColor() { return Color.valueOf(Color.rgb(r, g, b)); }
|
|
63
61
|
public String toString() {
|
|
64
62
|
StringBuffer sb = new StringBuffer(super.toString());
|
1
NamedColor バグ修正
answer
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
hoshi-takanori さんがコメントされました URL 先のコードをenum化して試してみましたが… 黒(rgb=0) を指定しても黒にならず orz
|
|
1
|
+
hoshi-takanori さんがコメントされました URL 先のコードをenum化して試してみましたが… ~~黒(rgb=0) を指定しても黒にならず orz~~ ←バグでした。(Color.red()等が0~255ではありませんでした)
|
|
2
2
|
|
|
3
3
|
NamedColor.getApproximateColor を弄ってみてください・・・なレベルになってしまいました。
|
|
4
4
|
|
|
@@ -9,32 +9,32 @@
|
|
|
9
9
|
import android.graphics.Color;
|
|
10
10
|
|
|
11
11
|
enum NamedColor {
|
|
12
|
-
AliceBlue("AliceBlue",
|
|
13
|
-
Beige("Beige",
|
|
14
|
-
CadetBlue("CadetBlue",
|
|
15
|
-
DarkBlue("DarkBlue",
|
|
16
|
-
Firebrick("Firebrick",
|
|
17
|
-
Gainsboro("Gainsboro",
|
|
18
|
-
Honeydew("Honeydew",
|
|
19
|
-
IndianRed("IndianRed",
|
|
20
|
-
Khaki("Khaki",
|
|
21
|
-
Lavender("Lavender",
|
|
22
|
-
Magenta("Magenta",
|
|
23
|
-
NavajoWhite("NavajoWhite",
|
|
24
|
-
OldLace("OldLace",
|
|
25
|
-
PaleGoldenrod("PaleGoldenrod",
|
|
26
|
-
Red("Red",
|
|
27
|
-
SaddleBrown("SaddleBrown",
|
|
28
|
-
Tan("Tan",
|
|
29
|
-
Violet("Violet",
|
|
30
|
-
Wheat("Wheat",
|
|
31
|
-
Yellow("Yellow",
|
|
12
|
+
AliceBlue("AliceBlue", 0xF0F8FF), AntiqueWhite("AntiqueWhite", 0xFAEBD7), Aqua("Aqua", 0x00FFFF), Aquamarine("Aquamarine", 0x7FFFD4), Azure("Azure", 0xF0FFFF),
|
|
13
|
+
Beige("Beige", 0xF5F5DC), Bisque("Bisque", 0xFFE4C4), Black("Black", 0x000000), BlanchedAlmond("BlanchedAlmond", 0xFFEBCD), Blue("Blue", 0x0000FF), BlueViolet("BlueViolet", 0x8A2BE2), Brown("Brown", 0xA52A2A), BurlyWood("BurlyWood", 0xDEB887),
|
|
14
|
+
CadetBlue("CadetBlue", 0x5F9EA0), Chartreuse("Chartreuse", 0x7FFF00), Chocolate("Chocolate", 0xD2691E), Coral("Coral", 0xFF7F50), CornflowerBlue("CornflowerBlue", 0x6495ED), Cornsilk("Cornsilk", 0xFFF8DC), Crimson("Crimson", 0xDC143C), Cyan("Cyan", 0x00FFFF),
|
|
15
|
+
DarkBlue("DarkBlue", 0x00008B), DarkCyan("DarkCyan", 0x008B8B), DarkGoldenrod("DarkGoldenrod", 0xB8860B), DarkGray("DarkGray", 0xA9A9A9), DarkGreen("DarkGreen", 0x006400), DarkKhaki("DarkKhaki", 0xBDB76B), DarkMagenta("DarkMagenta", 0x8B008B), DarkOliveGreen("DarkOliveGreen", 0x556B2F), DarkOrange("DarkOrange", 0xFF8C00), DarkOrchid("DarkOrchid", 0x9932CC), DarkRed("DarkRed", 0x8B0000), DarkSalmon("DarkSalmon", 0xE9967A), DarkSeaGreen("DarkSeaGreen", 0x8FBC8F), DarkSlateBlue("DarkSlateBlue", 0x483D8B), DarkSlateGray("DarkSlateGray", 0x2F4F4F), DarkTurquoise("DarkTurquoise", 0x00CED1), DarkViolet("DarkViolet", 0x9400D3), DeepPink("DeepPink", 0xFF1493), DeepSkyBlue("DeepSkyBlue", 0x00BFFF), DimGray("DimGray", 0x696969), DodgerBlue("DodgerBlue", 0x1E90FF),
|
|
16
|
+
Firebrick("Firebrick", 0xB22222), FloralWhite("FloralWhite", 0xFFFAF0), ForestGreen("ForestGreen", 0x228B22), Fuchsia("Fuchsia", 0xFF00FF),
|
|
17
|
+
Gainsboro("Gainsboro", 0xDCDCDC), GhostWhite("GhostWhite", 0xF8F8FF), Gold("Gold", 0xFFD700), Goldenrod("Goldenrod", 0xDAA520), Gray("Gray", 0x808080), Green("Green", 0x008000), GreenYellow("GreenYellow", 0xADFF2F),
|
|
18
|
+
Honeydew("Honeydew", 0xF0FFF0), HotPink("HotPink", 0xFF69B4),
|
|
19
|
+
IndianRed("IndianRed", 0xCD5C5C), Indigo("Indigo", 0x4B0082), Ivory("Ivory", 0xFFFFF0),
|
|
20
|
+
Khaki("Khaki", 0xF0E68C),
|
|
21
|
+
Lavender("Lavender", 0xE6E6FA), LavenderBlush("LavenderBlush", 0xFFF0F5), LawnGreen("LawnGreen", 0x7CFC00), LemonChiffon("LemonChiffon", 0xFFFACD), LightBlue("LightBlue", 0xADD8E6), LightCoral("LightCoral", 0xF08080), LightCyan("LightCyan", 0xE0FFFF), LightGoldenrodYellow("LightGoldenrodYellow", 0xFAFAD2), LightGray("LightGray", 0xD3D3D3), LightGreen("LightGreen", 0x90EE90), LightPink("LightPink", 0xFFB6C1), LightSalmon("LightSalmon", 0xFFA07A), LightSeaGreen("LightSeaGreen", 0x20B2AA), LightSkyBlue("LightSkyBlue", 0x87CEFA), LightSlateGray("LightSlateGray", 0x778899), LightSteelBlue("LightSteelBlue", 0xB0C4DE), LightYellow("LightYellow", 0xFFFFE0), Lime("Lime", 0x00FF00), LimeGreen("LimeGreen", 0x32CD32), Linen("Linen", 0xFAF0E6),
|
|
22
|
+
Magenta("Magenta", 0xFF00FF), Maroon("Maroon", 0x800000), MediumAquamarine("MediumAquamarine", 0x66CDAA), MediumBlue("MediumBlue", 0x0000CD), MediumOrchid("MediumOrchid", 0xBA55D3), MediumPurple("MediumPurple", 0x9370DB), MediumSeaGreen("MediumSeaGreen", 0x3CB371), MediumSlateBlue("MediumSlateBlue", 0x7B68EE), MediumSpringGreen("MediumSpringGreen", 0x00FA9A), MediumTurquoise("MediumTurquoise", 0x48D1CC), MediumVioletRed("MediumVioletRed", 0xC71585), MidnightBlue("MidnightBlue", 0x191970), MintCream("MintCream", 0xF5FFFA), MistyRose("MistyRose", 0xFFE4E1), Moccasin("Moccasin", 0xFFE4B5),
|
|
23
|
+
NavajoWhite("NavajoWhite", 0xFFDEAD), Navy("Navy", 0x000080),
|
|
24
|
+
OldLace("OldLace", 0xFDF5E6), Olive("Olive", 0x808000), OliveDrab("OliveDrab", 0x6B8E23), Orange("Orange", 0xFFA500), OrangeRed("OrangeRed", 0xFF4500), Orchid("Orchid", 0xDA70D6),
|
|
25
|
+
PaleGoldenrod("PaleGoldenrod", 0xEEE8AA), PaleGreen("PaleGreen", 0x98FB98), PaleTurquoise("PaleTurquoise", 0xAFEEEE), PaleVioletRed("PaleVioletRed", 0xDB7093), PapayaWhip("PapayaWhip", 0xFFEFD5), PeachPuff("PeachPuff", 0xFFDAB9), Peru("Peru", 0xCD853F), Pink("Pink", 0xFFC0CB), Plum("Plum", 0xDDA0DD), PowderBlue("PowderBlue", 0xB0E0E6), Purple("Purple", 0x800080),
|
|
26
|
+
Red("Red", 0xFF0000), RosyBrown("RosyBrown", 0xBC8F8F), RoyalBlue("RoyalBlue", 0x4169E1),
|
|
27
|
+
SaddleBrown("SaddleBrown", 0x8B4513), Salmon("Salmon", 0xFA8072), SandyBrown("SandyBrown", 0xF4A460), SeaGreen("SeaGreen", 0x2E8B57), SeaShell("SeaShell", 0xFFF5EE), Sienna("Sienna", 0xA0522D), Silver("Silver", 0xC0C0C0), SkyBlue("SkyBlue", 0x87CEEB), SlateBlue("SlateBlue", 0x6A5ACD), SlateGray("SlateGray", 0x708090), Snow("Snow", 0xFFFAFA), SpringGreen("SpringGreen", 0x00FF7F), SteelBlue("SteelBlue", 0x4682B4),
|
|
28
|
+
Tan("Tan", 0xD2B48C), Teal("Teal", 0x008080), Thistle("Thistle", 0xD8BFD8), Tomato("Tomato", 0xFF6347), Turquoise("Turquoise", 0x40E0D0),
|
|
29
|
+
Violet("Violet", 0xEE82EE),
|
|
30
|
+
Wheat("Wheat", 0xF5DEB3), White("White", 0xFFFFFF), WhiteSmoke("WhiteSmoke", 0xF5F5F5),
|
|
31
|
+
Yellow("Yellow", 0xFFFF01), YellowGreen("YellowGreen", 0x9ACD32);
|
|
32
32
|
|
|
33
|
-
public static NamedColor getApproximateColor(int
|
|
33
|
+
public static NamedColor getApproximateColor(int rgb) {
|
|
34
34
|
int min = Integer.MAX_VALUE;
|
|
35
|
-
int r = Color.red(
|
|
35
|
+
int r = Color.red(rgb);
|
|
36
|
-
int g = Color.green(
|
|
36
|
+
int g = Color.green(rgb);
|
|
37
|
-
int b = Color.blue(
|
|
37
|
+
int b = Color.blue(rgb);
|
|
38
38
|
NamedColor color = null;
|
|
39
39
|
for(NamedColor c : values()) {
|
|
40
40
|
int mse = c.computeMSE(r, g, b);
|
|
@@ -47,24 +47,29 @@
|
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
private String name;
|
|
50
|
-
private
|
|
50
|
+
private int r, g, b;
|
|
51
51
|
|
|
52
|
-
NamedColor(String name, int
|
|
52
|
+
NamedColor(String name, int rgb) {
|
|
53
53
|
this.name = name;
|
|
54
|
+
r = Color.red(rgb);
|
|
55
|
+
g = Color.green(rgb);
|
|
54
|
-
|
|
56
|
+
b = Color.blue(rgb);
|
|
55
57
|
}
|
|
56
58
|
|
|
57
59
|
public String getName() {
|
|
58
60
|
return name;
|
|
59
61
|
}
|
|
62
|
+
public Color getColor() { return Color.valueOf(Color.rgb(r, g, b)); }
|
|
60
|
-
public
|
|
63
|
+
public String toString() {
|
|
64
|
+
StringBuffer sb = new StringBuffer(super.toString());
|
|
65
|
+
sb.append("[r=").append(r);
|
|
66
|
+
sb.append(",g=").append(g);
|
|
67
|
+
sb.append(",b=").append(b);
|
|
61
|
-
return
|
|
68
|
+
return sb.append("]").toString();
|
|
62
69
|
}
|
|
63
70
|
|
|
64
|
-
private int computeMSE(int
|
|
71
|
+
private int computeMSE(int pr, int pg, int pb) {
|
|
65
|
-
return (int)
|
|
72
|
+
return (int)(((pr - r) * (pr - r) + (pg - g) * (pg - g) + (pb - b) * (pb - b)) / 3);
|
|
66
|
-
+ (g - color.green()) * (g - color.green())
|
|
67
|
-
+ (b - color.blue()) * (b - color.blue())) / 3);
|
|
68
73
|
}
|
|
69
74
|
}
|
|
70
75
|
```
|