मैं जावा में हेक्स रंग को RGB कोड में कैसे बदल सकता हूं? ज्यादातर Google में, नमूने आरजीबी से हेक्स में बदलने के तरीके पर हैं।
मैं जावा में हेक्स रंग को RGB कोड में कैसे बदल सकता हूं? ज्यादातर Google में, नमूने आरजीबी से हेक्स में बदलने के तरीके पर हैं।
जवाबों:
मुझे लगता है कि यह करना चाहिए:
/**
*
* @param colorStr e.g. "#FFFFFF"
* @return
*/
public static Color hex2Rgb(String colorStr) {
return new Color(
Integer.valueOf( colorStr.substring( 1, 3 ), 16 ),
Integer.valueOf( colorStr.substring( 3, 5 ), 16 ),
Integer.valueOf( colorStr.substring( 5, 7 ), 16 ) );
}
वास्तव में, ऐसा करने का एक आसान (अंतर्निहित) तरीका है:
Color.decode("#FFCCEE");
public static void main(String[] args) {
int hex = 0x123456;
int r = (hex & 0xFF0000) >> 16;
int g = (hex & 0xFF00) >> 8;
int b = (hex & 0xFF);
}
के लिए एंड्रॉयड विकास, मैं का उपयोग करें:
int color = Color.parseColor("#123456");
यहाँ एक संस्करण है जो RGB और RGBA दोनों संस्करणों को संभालता है:
/**
* Converts a hex string to a color. If it can't be converted null is returned.
* @param hex (i.e. #CCCCCCFF or CCCCCC)
* @return Color
*/
public static Color HexToColor(String hex)
{
hex = hex.replace("#", "");
switch (hex.length()) {
case 6:
return new Color(
Integer.valueOf(hex.substring(0, 2), 16),
Integer.valueOf(hex.substring(2, 4), 16),
Integer.valueOf(hex.substring(4, 6), 16));
case 8:
return new Color(
Integer.valueOf(hex.substring(0, 2), 16),
Integer.valueOf(hex.substring(2, 4), 16),
Integer.valueOf(hex.substring(4, 6), 16),
Integer.valueOf(hex.substring(6, 8), 16));
}
return null;
}
एक हेक्स रंग कोड #RRGGBB है
आरआर, जीजी, बीबी 0-255 से लेकर हेक्स मान हैं
आरआर एक्सवाई को कॉल करें जहां एक्स और वाई हेक्स चरित्र 0-9 ए-एफ, ए = 10, एफ = 15 हैं
दशमलव मान X * 16 + Y है
यदि आरआर = बी 7, बी के लिए दशमलव 11 है, तो मान 11 * 16 + 7 = 183 है
public int[] getRGB(String rgb){
int[] ret = new int[3];
for(int i=0; i<3; i++){
ret[i] = hexToInt(rgb.charAt(i*2), rgb.charAt(i*2+1));
}
return ret;
}
public int hexToInt(char a, char b){
int x = a < 65 ? a-48 : a-55;
int y = b < 65 ? b-48 : b-55;
return x*16+y;
}
आप इसे नीचे के रूप में कर सकते हैं:
public static int[] getRGB(final String rgb)
{
final int[] ret = new int[3];
for (int i = 0; i < 3; i++)
{
ret[i] = Integer.parseInt(rgb.substring(i * 2, i * 2 + 2), 16);
}
return ret;
}
उदाहरण के लिए
getRGB("444444") = 68,68,68
getRGB("FFFFFF") = 255,255,255
इसे एक पूर्णांक में रूपांतरित करें, फिर इसे दो बार 16, 256, 4096 या 65536 पर मूल हेक्स स्ट्रिंग (क्रमशः 3, 6, 9, या 12) की लंबाई के आधार पर विभाजित करें।
प्रदान किए गए उत्तर @xhh के बारे में विस्तार से बताने के लिए, आप लाल, हरे और नीले रंग में अपनी स्ट्रिंग को "rgb (0,0,0)" के रूप में प्रारूपित कर सकते हैं, इसे वापस करने से पहले।
/**
*
* @param colorStr e.g. "#FFFFFF"
* @return String - formatted "rgb(0,0,0)"
*/
public static String hex2Rgb(String colorStr) {
Color c = new Color(
Integer.valueOf(hexString.substring(1, 3), 16),
Integer.valueOf(hexString.substring(3, 5), 16),
Integer.valueOf(hexString.substring(5, 7), 16));
StringBuffer sb = new StringBuffer();
sb.append("rgb(");
sb.append(c.getRed());
sb.append(",");
sb.append(c.getGreen());
sb.append(",");
sb.append(c.getBlue());
sb.append(")");
return sb.toString();
}
यदि आप AWT Color.decode का उपयोग नहीं करना चाहते हैं, तो बस विधि की सामग्री की प्रतिलिपि बनाएँ:
int i = Integer.decode("#FFFFFF");
int[] rgb = new int[]{(i >> 16) & 0xFF, (i >> 8) & 0xFF, i & 0xFF};
Integer.decode # स्ट्रिंग को स्वरूपित करने के तरीके के आधार पर, # या 0x को संभालता है
यहाँ एक और तेज़ संस्करण है जो RGBA संस्करण को संभालता है:
public static int hexToIntColor(String hex){
int Alpha = Integer.valueOf(hex.substring(0, 2), 16);
int Red = Integer.valueOf(hex.substring(2, 4), 16);
int Green = Integer.valueOf(hex.substring(4, 6), 16);
int Blue = Integer.valueOf(hex.substring(6, 8), 16);
Alpha = (Alpha << 24) & 0xFF000000;
Red = (Red << 16) & 0x00FF0000;
Green = (Green << 8) & 0x0000FF00;
Blue = Blue & 0x000000FF;
return Alpha | Red | Green | Blue;
}
सबसे आसान तरीका:
// 0000FF
public static Color hex2Rgb(String colorStr) {
return new Color(Integer.valueOf(colorStr, 16));
}
हेक्सिडेसिमल कलर कोड पहले से ही आरजीबी हैं। प्रारूप #RRGGBB है
दूसरे दिन मैं इसी तरह के मुद्दे को हल कर रहा था और हेक्स रंग स्ट्रिंग को इंट सरणी में बदलने के लिए सुविधाजनक पाया गया [अल्फा, आर, जी, बी]:
/**
* Hex color string to int[] array converter
*
* @param hexARGB should be color hex string: #AARRGGBB or #RRGGBB
* @return int[] array: [alpha, r, g, b]
* @throws IllegalArgumentException
*/
public static int[] hexStringToARGB(String hexARGB) throws IllegalArgumentException {
if (!hexARGB.startsWith("#") || !(hexARGB.length() == 7 || hexARGB.length() == 9)) {
throw new IllegalArgumentException("Hex color string is incorrect!");
}
int[] intARGB = new int[4];
if (hexARGB.length() == 9) {
intARGB[0] = Integer.valueOf(hexARGB.substring(1, 3), 16); // alpha
intARGB[1] = Integer.valueOf(hexARGB.substring(3, 5), 16); // red
intARGB[2] = Integer.valueOf(hexARGB.substring(5, 7), 16); // green
intARGB[3] = Integer.valueOf(hexARGB.substring(7), 16); // blue
} else hexStringToARGB("#FF" + hexARGB.substring(1));
return intARGB;
}
For shortened hex code like #fff or #000
int red = "colorString".charAt(1) == '0' ? 0 :
"colorString".charAt(1) == 'f' ? 255 : 228;
int green =
"colorString".charAt(2) == '0' ? 0 : "colorString".charAt(2) == 'f' ?
255 : 228;
int blue = "colorString".charAt(3) == '0' ? 0 :
"colorString".charAt(3) == 'f' ? 255 : 228;
Color.rgb(red, green,blue);