Как преобразовать RGBA в Hex из массива? - PullRequest
0 голосов
/ 29 октября 2019

снимок прикреплен [снимок] Я получу цвет фона одного из семи дней и преобразую в шестнадцатеричный формат. Часы дня выбираются автоматически в полночь и подсвечиваются фиолетовым цветом. Я выберу выделенные часы из списка семи дней. Я запустил массив и получил этот результат один из семи дней: «rgb (92, 50, 150) нет повторной прокрутки 0% 0% / auto padding-box border-box» Но мое преобразование не выполняется и выдает эту ошибку. Отсутствует константа перечисления: С 00:00 до 20:00
Вторник: с 13:00 до 18:00
Среда: с 10:00 до 18:00
Четверг: с 12:00 до 20:00
Пятница: с 10:00 до 18:00
Суббота: с 10:00 до 17:00

@ Тест (приоритет = 3, описание = "Проверить дату и часы")) public void today () выдает InterruptedException {WebElement sunday = driver.findElement (By.xpath ("// [@ id = 'hours'] / div / div / div / div 1 "));String sundayHrs = sunday.getCssValue ("background");String selectSunday = Color.fromString (sundayHrs) .asHex ();WebElement monday = driver.findElement (By.xpath ("// [@ id = 'hours'] / div / div / div / div [2]"));String mondayHrs = monday.getCssValue ("background");String selectMonday = Color.fromString (mondayHrs) .asHex ();WebElement tuesday = driver.findElement (By.xpath ("// [@ id = 'hours'] / div / div / div / div [3]"));String tuesdayHrs = tuesday.getCssValue ("background");String selectTuesday = Color.fromString (tuesdayHrs) .asHex ();WebElement wednesday = driver.findElement (By.xpath ("// [@ id = 'hours'] / div / div / div / div [4]"));String wednesdayHrs = wednesday.getCssValue ("background");String selectWednesday = Color.fromString (wednesdayHrs) .asHex ();WebElement thursday = driver.findElement (By.xpath ("// [@ id = 'hours'] / div / div / div / div [5]"));String thursdayHrs = thursday.getCssValue ("background");Строка selectThursday = Color.fromString (thursdayHrs) .asHex ();WebElement friday = driver.findElement (By.xpath ("// [@ id = 'hours'] / div / div / div / div [6]"));String fridayHrs = friday.getCssValue ("background");Строка selectFriday = Color.fromString (пятницаHrs) .asHex ();

    WebElement saturday =driver.findElement(By.xpath("//*[@id='hours']/div/div/div/div[7]"));
    String saturdayHrs= saturday.getCssValue("background");
    String selectSaturday = Color.fromString(saturdayHrs).asHex();



    String [] selectDate = {selectSunday, selectMonday, selectTuesday, selectWednesday, selectThursday, selectFriday, selectSaturday};

    for (String dtColor:selectDate) {
        System.out.println(dtColor);
    }
}

Ответы [ 3 ]

1 голос
/ 29 октября 2019

Есть много способов достичь этого: Первое решение:

String hex = String.format("#%02x%02x%02x%02x", a, r, g, b);

Второе решение:

public int toHex(Color color) {
    String alpha = addPadding(Integer.toHexString(color.getAlpha()));
    String red = addPadding(Integer.toHexString(color.getRed()));
    String green = addPadding(Integer.toHexString(color.getGreen()));
    String blue = addPadding(Integer.toHexString(color.getBlue()));
    String hex = "0x" + alpha + red + green + blue;
    return Integer.parseInt(hex, 16);
}

private static final String addPadding(String s) {
    return (s.length() == 1) ? "0" + s : s;
}

Первое решение возвращает шестнадцатеричную строку, а второе - шестнадцатеричное, представленное какцелое число.

0 голосов
/ 29 октября 2019

Используя класс java.awt.Color, вы можете получить значение rgb.

String color2hex(Color color) {
    return String.format("#%08X", color.getRGB());
}
0 голосов
/ 29 октября 2019

Сделайте это быстро, используя несколько побитовых операторов. Это также может быть использовано для эффективной упаковки 32-битного цвета.

String rgba2hex(int red, int green, int blue, int alpha) {
    return String.format("0x%08X", rgba(red, green, blue, alpha));
}

int rgba(int red, int green, int blue, int alpha) {
    int rgba = 0;
    rgba |= (alpha & 0xff) << 24;
    rgba |= (red & 0xff) << 16;
    rgba |= (green & 0xff) << 8;
    rgba |= (blue & 0xff);
    return rgba;
}

// reverse it
int[] rgba(int rgba) {
    int[] color = new int[4];
    color[4] = (rgba >> 24) & 0xff; // alpha
    color[1] = (rgba >> 16) & 0xff; // red
    color[2] = (rgba >> 8) & 0xff; // green
    color[3] = rgba & 0xff; // blue
    return color;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...