티스토리 뷰
Devolopment/JAVA
Hexadecimal과 RGB(Red, Green, Blue)로 표현된 색상을 서로 변환하거나 Decimal code로 변형하는 Java 코드 예제
OpenUiz 2023. 6. 9. 11:09반응형
다음은 16진수 또는 10진수(RED, GREEN, BLUE)로 입력된 색상 값을 Decimal code로 변환하거나 혹은 반대로 변환하는 Java 메서드입니다.
public class ColorConverter {
// 16진수 색상 값을 입력으로 받아 유효성을 검사한 다음
// Integer.parseInt(color, 16)을 사용하여 10진수 코드로 변환
public static int convertColorToDecimal(String color) {
if (color.startsWith("#")) { // #FFFFFF 로 입력된 경우 # 제거
color = color.substring(1);
}
if (color.length() != 6) {
throw new IllegalArgumentException("Invalid color format. Expected 6-digit hexadecimal value.");
}
return Integer.parseInt(color, 16);
}
// 개별 RGB 색상 구성 요소를 입력으로 사용하여 유효성을 검사하고
// 비트 시프트 연산과 비트 OR(|)을 사용하여 단일 십진수 코드로 결합
public static int convertColorToDecimal(int red, int green, int blue) {
int decimalRed = validateColorValue(red);
int decimalGreen = validateColorValue(green);
int decimalBlue = validateColorValue(blue);
return (decimalRed << 16) | (decimalGreen << 8) | decimalBlue;
}
// 10진 색상 값을 입력으로 받아 Integer.toHexString(color)으로 16진 코드 변환
// 모두 대문자 변환 후 문자열 반환
public static String convertDecimalToHex(int color) {
String hex = Integer.toHexString(color);
// 필요한 경우 각 구성 요소를 0으로 채움
while (hex.length() < 6) {
hex = "0" + hex;
}
return hex.toUpperCase();
}
// 빨강, 녹색 및 파랑 구성 요소를 별도의 정수로 가져와 16진수 색상 표현으로 변환
// 색상 값의 유효성을 검사하고 Integer.toHexString을 사용하여 16진수 문자열로 변환
public static String convertRGBToHex(int red, int green, int blue) {
int decimalRed = validateColorValue(red);
int decimalGreen = validateColorValue(green);
int decimalBlue = validateColorValue(blue);
String hexRed = Integer.toHexString(decimalRed);
String hexGreen = Integer.toHexString(decimalGreen);
String hexBlue = Integer.toHexString(decimalBlue);
// 필요한 경우 각 구성 요소를 0으로 채움
hexRed = padWithZeros(hexRed);
hexGreen = padWithZeros(hexGreen);
hexBlue = padWithZeros(hexBlue);
// 색상값 문자열결합
return hexRed + hexGreen + hexBlue;
}
// 16진수 색상 문자열을 입력으로 사용하여 빨강, 녹색 및 파랑 구성 요소의 숫자 배열로 변환
// "#" 기호(있는 경우)를 제거하고 입력 형식의 유효성을 검사하며
// Integer.parseInt를 사용하여 16진수 문자열을 10진수 값으로 구문 분석하여
// 비트 단위 시프트 및 비트 단위 AND 연산을 사용하여 개별 RGB 구성 요소를 추출
public static int[] convertHexToRGB(String hex) {
if (hex.startsWith("#")) { // #FFFFFF 로 입력된 경우 # 제거
hex = hex.substring(1);
}
if (hex.length() != 6) {
throw new IllegalArgumentException("Invalid color format. Expected 6-digit hexadecimal value.");
}
int decimal = Integer.parseInt(hex, 16);
int red = (decimal >> 16) & 0xFF;
int green = (decimal >> 8) & 0xFF;
int blue = decimal & 0xFF;
return new int[]{red, green, blue};
}
private static int validateColorValue(int value) {
if (value < 0 || value > 255) {
throw new IllegalArgumentException("Invalid color value. Expected a number between 0 and 255.");
}
return value;
}
// 필요한 경우 각 구성 요소를 0으로 채움
private static String padWithZeros(String hex) {
if (hex.length() < 2) {
hex = "0" + hex;
}
return hex;
}
public static void main(String[] args) {
int a = convertColorToDecimal("2F329F");
int b = convertColorToDecimal(42, 50, 159);
System.out.println("a = " + a);
System.out.println("b = " + b);
int c = convertColorToDecimal("6C4A2D");
int d = convertColorToDecimal(108, 74, 45);
System.out.println("c = " + c);
System.out.println("d = " + d);
String rgb = convertRGBToHex(42, 50, 159);
int[] decimal = convertHexToRGB("6C4A2D");
System.out.println("rgb = " + rgb); // rgb = 2A329F
System.out.println("decimal = [" + decimal[0] + ", " + decimal[1] + ", " + decimal[2] + "]");
// decimal = [108, 74, 45]
}
}
결과
반응형
'Devolopment > JAVA' 카테고리의 다른 글
[Java] Map에서 입력받은 값의 근사치를 얻는 메서드 예제 (Find the closest value in the map.) (0) | 2023.07.03 |
---|---|
사용자지정 어노테이션 생성방법. (선택적 옵션 및 추가속성 정의 방법 포함) (0) | 2023.06.20 |
[J2V8] Java로 만들어진 사칙연산 함수를 javascript구문을 입력받아 실행하는 예제 (0) | 2023.05.19 |
수식 문자열을 받아 사칙연산 (괄호, sqrt, abs, power 포함) 수행하는 Java Code (0) | 2023.03.10 |
lucene-analysis-nori 사전교체 방법 (0) | 2020.02.25 |
반응형
최근에 달린 댓글