Другие языки программирования и технологии
Считая, что пиксель изображения имеет глубину цвета 24 bpp
Нужно перивести шестнадцатиричное представление заданного цвета при порядке следования байт BGR: - Y; -M
Что значить "перевисти?" Перевести в куда?
- Поменять порядок байт BGR>RGB? Какой язык? В разных языках битовые операции разный синтаксис напсания. (Я напишу на Си) Вкратце если вам надо поменять синий и красный байт местами - то есть 2 способа как минимум.
Если пиксель кодируется 4байтным числом и доступ к пикселу осуществляется через массив int* (быстрее обрабатывается но занимает больше памяти) - то лучше применять сдвиги.
argb = (( abgr << 16 ) & 0xFF0000 ) | (abgr & 0x00FF) | ((abgr >> 16 ) & 0xFF );
тут последовательно выбираем R, G, и B и битовыми операциями собираем новое значение пикселя.
Если 3байтным и доступ осуществляется через массив char* - то лучше перебрать изображение и выполнить обмен через XOR, см тут: https://en.wikipedia.org/wiki/XOR_swap_algorithm
for( i=0; i < imageLength; i += 3 )
xor_swap(sibpixel+i, subPixel + i + 2); // поменять местами красный и синий, функция с википедии
- Из строки в число? Тогда нужно понять, какой язык и какие библиотечные функции можно использовать? Или требуется написать функцию по переводу строки? Тогда просто в цикле переберите строку (например str) (посимвольно) и каждый символ переводите в число (например x):
// дано: строка str длины strLength содержащая 16ричное представление
int convert_hex_to_integer(const char* str, int strLength) {
int x = 0;
for(i=0; i < strLength; ++i) {
// основание системы счисления
x *= 16;
// перевод буквы в цифру с поддержкой как строчных так и заглавных символом
x += (str[i] > 'Z') ? (str[i] - 'a' + 10) : ((str[i] > '9' ? (str[i] - 'A' + 10) : (str[i] - '0'))
}
return x;
}
- Поменять порядок байт BGR>RGB? Какой язык? В разных языках битовые операции разный синтаксис напсания. (Я напишу на Си) Вкратце если вам надо поменять синий и красный байт местами - то есть 2 способа как минимум.
Если пиксель кодируется 4байтным числом и доступ к пикселу осуществляется через массив int* (быстрее обрабатывается но занимает больше памяти) - то лучше применять сдвиги.
argb = (( abgr << 16 ) & 0xFF0000 ) | (abgr & 0x00FF) | ((abgr >> 16 ) & 0xFF );
тут последовательно выбираем R, G, и B и битовыми операциями собираем новое значение пикселя.
Если 3байтным и доступ осуществляется через массив char* - то лучше перебрать изображение и выполнить обмен через XOR, см тут: https://en.wikipedia.org/wiki/XOR_swap_algorithm
for( i=0; i < imageLength; i += 3 )
xor_swap(sibpixel+i, subPixel + i + 2); // поменять местами красный и синий, функция с википедии
- Из строки в число? Тогда нужно понять, какой язык и какие библиотечные функции можно использовать? Или требуется написать функцию по переводу строки? Тогда просто в цикле переберите строку (например str) (посимвольно) и каждый символ переводите в число (например x):
// дано: строка str длины strLength содержащая 16ричное представление
int convert_hex_to_integer(const char* str, int strLength) {
int x = 0;
for(i=0; i < strLength; ++i) {
// основание системы счисления
x *= 16;
// перевод буквы в цифру с поддержкой как строчных так и заглавных символом
x += (str[i] > 'Z') ? (str[i] - 'a' + 10) : ((str[i] > '9' ? (str[i] - 'A' + 10) : (str[i] - '0'))
}
return x;
}
Похожие вопросы
- Объём изображения зависит только от глубины цвета и количества пикселей? Их произведение и даёт нам объём?
- как изменить глубину цвета с 32 на 24? как изменить глубину цвета с 32 на 24?
- Помогите с C# Forms. Как изображению установить красный цвет?
- Подскажите, как в Сorel Draw 3 цветное растровое изображение разделить на цвета.
- Чтобы распечатать постер в цвете форматами А3, А2, А1, каким должно быть изображение (в пикселях, МБ)?
- Ассемблер. Как задать цвет пикселя, если номер цвета не помещается в регистр?
- Верстка. Пиксель в пиксель?
- Очень тупой вопрос про пиксели в таблицах html - помогите разобраться :-( Я, не очень понимаю, как вы угадываете кол-во
- Ассемблер SVGA VESA вывести пиксель
- Срочно! Люди! Как сделать размер изображения 2800 * 2800 пикселей? Пожалуйста! помогите!