Что Color.rgb делает в Android? - PullRequest
       43

Что Color.rgb делает в Android?

3 голосов
/ 14 августа 2011

Я создаю приложение, которое выполняет некоторую обработку изображений в реальном времени с помощью камеры. Я написал код на Java, и теперь я пытаюсь перенести этот код на нативный код, чтобы ускорить процесс. Важной частью Java-кода является использование метода Color.rgb (из библиотеки android.Graphics ) для преобразования моего массива пикселей в «цветовые оттенки» (описание приведено в документации). Конкретная строка кода:

Color.rgb(pixel, pixel, pixel)

где pixel - это целое число от 0 до 255. Затем я использую метод drawBitmap, чтобы нарисовать этот массив цветовых элементов на холсте. Да, я понимаю, что это приводит к черно-белому изображению, потому что это то, что мне нужно.

Теперь мне нужно преобразовать интенсивность пикселей в цвета C в моем коде C, и я не могу использовать вышеуказанный метод, так как в C. нет библиотеки. Я не уверен, какие цвета есть даже в первое место. Если бы кто-нибудь мог описать мне, что метод Color.rgb на самом деле делает со значением интенсивности, я мог бы вручную кодировать это в C. Cheers.

Ответы [ 2 ]

4 голосов
/ 14 августа 2011

Взгляните:

public static int rgb(int red, int green, int blue) {
  return (0xFF << 24) | (red << 16) | (green << 8) | blue;
}

Источник

1 голос
/ 14 августа 2011

«color-int» - это упакованное 32-битное (ARGB) значение цвета, где каждый компонент сам по себе равен 8 битам.

rgb - это помощник для преобразования дискретных значений в «цвет»-INT».Просмотр документации alpha, red, green и blue предоставляет достаточно информации, чтобы сделать это, не глядя на источник для самого rgb.

Счастливое кодирование.

...