Інтернет Windows Android

Що таке зображення в форматі rgb. Колірна модель rgb

Нещодавно я написав код, щоб зробити саме це, на основі універсального перетворювача колірного формату проекту ScummVM.

Відповідь на інше питання тут, на StackOverflow, і хоча питання, на мій погляд, не є дублікатом, я думаю, відповідь є, тому я просто зв'яжуся з ним:

Пам'ятайте, я точно не знаю, як множник для кожного фактора працює в форматі 5-6-5. Чи є 6-бітний компонент просто більш точним? В цьому випадку автоматична система перетворення виконає цю роботу.

У будь-якому випадку, з наведеними вище кодом, цей приклад повинен найкращим чином задовольнити ваші потреби. Тут він використовується для перетворення призначеного для користувача формату 5-5-5-1 RGBA:

// bytes 84 21 \u003d\u003d\u003e 0x8421 (BE) \u003d\u003d bin \u003d\u003d\u003e 1000 0100 0010 0001 \u003d\u003d split \u003d\u003d\u003e 10000 10000 10000 1 \u003d\u003d dec \u003d\u003d\u003e 16 16 16 1 (RGBA) \u003d\u003d adjust \u003d\u003d \u003e 128 128 128 255 // values \u200b\u200bin constructor are: bytes per pixel, amount of bits and amount to shift for getting R, G, B and A components, and data endianness. private static PixelFormatter SixteenBppFormatter \u003d new PixelFormatter (2, 5, 11, 5, 6, 5, 1, 1, 0, false); protected static Byte Convert16bTo32b (Byte imageData, Int32 startOffset, Int32 width, Int32 height, ref Int32 stride) (Int32 newImageStride \u003d width * 4;; Byte newImageData \u003d new Byte; for (Int32 y \u003d 0; y< height; y++) { for (Int32 x = 0; x < width; x++) { Int32 sourceOffset = y * stride + x * 2; Int32 targetOffset = y * newImageStride + x * 4; Color c = SixteenBppFormatter.GetColor(imageData, startOffset + sourceOffset); PixelFormatter.Format32BitArgb.WriteColor(newImageData, targetOffset, c); } } stride = newImageStride; return newImageData; }

Все, що вам потрібно зробити, це визначити свій власний PixelFormatter з правильним розподілом бітів для формату 5-6-5.

Вам дійсно потрібно заглянути в Bitmap.LockBits (), щоб отримати вихідні 16-бітові дані з зображення і записати ці дані в нове 32-бітове зображення ARGB. Моя функція BuildImage, згадана в цій відповіді, повинна показати, як обробляти запис. Метод читання насправді набагато простіше:

///

/// Gets the raw bytes from an image. /// /// The image to get the bytes from. /// Stride of the retrieved image data. /// The raw bytes of the image public static Byte GetImageData (Bitmap sourceImage, out Int32 stride) (BitmapData sourceData \u003d sourceImage.LockBits (new Rectangle (0, 0, sourceImage.Width, sourceImage.Height), ImageLockMode.ReadOnly, sourceImage.PixelFormat); stride \u003d sourceData.Stride ; Byte data \u003d new Byte; Marshal.Copy (sourceData.Scan0, data, 0, data.Length); sourceImage.UnlockBits (sourceData); return data;)

Зверніть увагу, що у всіх ситуаціях, коли ви редагуєте байти необроблених зображень, різниця між "кроками" і "шириною". У багатьох форматах один рядок пікселів в зображенні доповнюється наступним кратним чотирьом байтам, тому ви не можете просто читати і обробляти його як масив, який передбачає всі ці зображення; ці прописні байти будуть дуже швидкими. Як показано в моєму прикладі коду для перетворення мого формату 16bpp в ARGB, вам дійсно потрібно робити це по черзі, і в кожному рядку переконайтеся, що ви використовуєте тільки дані, які все ще знаходяться в діапазоні (ширина * байти на піксель).

Я помітив, що для всіх функцій, які можуть змінити крок, рекомендується вказати його як ref.

Найзручніший, поширений, універсальний спосіб вказівки кольору - RGB. RGB це абревіатура (Red Green Blue), що означає: червоний, зелений, синій - основні кольори, шляхом комбінування яких виходять всі інші кольори.

Колір за допомогою RGB можна встановлювати декількома способами, далі докладно про кожен.

Функціональний формат запису кольору в CSS

Загальний вигляд функціонального формату: rgb (колір), де «колір», це комбінація з трьох цілих чисел (від 0 до 255) або трьох процентних значень (від 0% до 100%), перерахованих через кому. Далі кілька прикладів.

Rgb (255, 255, 255) / * білий колір * /
rgb (0, 0, 0) / * чорний колір * /
rgb (255, 0, 0) / * червоний колір * /

Rgb (100%, 100%, 100%) / * білий колір * /
rgb (0%, 0%, 0%) / * чорний колір * /
rgb (100%, 0%, 0%) / * червоний колір * /

Після rgb і перед (немає пробілу!

Тепер давайте зробимо колір тексту заголовка якимось рандомних кольором, наприклад, rgb (222, 14, 100), це якийсь рожевий або фіолетовий колір. Далі приклад застосування.

H1 (
color: rgb (222, 14, 100);
}

А тепер за допомогою процентних значень і RGB створимо пару відтінків зеленого. Це приклад 4.

Приклад 4, CSS код

P.one (color: rgb (0%, 20%, 0%);)
p.two (color: rgb (0%, 40%, 0%);)
p.three (color: rgb (0%, 60%, 0%);)
p.four (color: rgb (0%, 80%, 0%);)
p.five (color: rgb (0%, 100%, 0%);)

Приклад 4, HTML код

зелений


зелений


зелений


зелений


зелений

До речі, процентні числа можна писати дробові, наприклад, rgb (40.2%, 22.34%, 12%), так колір буде більш точний.

І що ж станеться, якщо ми вийдемо за рамки діапазону значень? Нічого особливого не буде, просто значення будуть інтерпретовані до найближчих кордонів (0% або 100%, 0 або 255). Далі приклад п'ятий.

Rgb (200%, 3100%, 101%) / * буде rgb (100%, 100%, 100%) * /
rgb (-200%, 0%, 12%) / * буде rgb (0%, 0%, 12%) * /
rgb (257, -130, 212) / * буде rgb (255, 0, 212) * /

Припустимо, у нас є наступний CSS код: rgb (12%, 96%, 43%) і нам потрібно перевести процентні значення в цілі. Це робиться дуже просто, потрібно помножити кожен рівень на 255, а потім розділити на 100, в результаті отримаємо rgb (30.6, 244.8, 109.65), після ми округляємо за правилами математики і отримуємо бажане: rgb (31, 245, 110).

Шістнадцятковий формат запису кольору в CSS

Я найчастіше використовую саме шістнадцятковий формат, просто він коротше. Далі приклад.

P (color: #FFFFFF;) / * білий колір тексту * /
p (color: # 000000;) / * чорний колір тексту * /
p (color: # FF0000;) / * червоний колір тексту * /

Відмінностей від RGB майже немає. Вказується три кольори RRGGBB в діапазоні від 00 до FF (FF це 255 в десятковій системі). Як бачите, між числами і буквами немає прогалин та інших знаків (друга причина, чому мені цей формат більше подобається), і шістнадцятковий код починається з решітки (#). До речі, шістнадцятковий формат називають HEX форматом. Далі приклад трьох однакових кольорів, які написані трьома способами.

У вас є проблема з откритіем.RGB-файлів? Ми збираємо інформацію про файлових форматах і можемо розповісти для чого потрібні файли RGB. Додатково ми рекомендуємо програми, які найбільше підходять для відкриття або конвертації таких файлів.

Для чого потрібен файловий формат.RGB?

Похідне від стандартного позначення аддитивной колірної моделі RGB (червоний, зелений, синій), розширення .rgb пов'язане з типом файлів "Кольорове растрове зображення RGB SGI" - частиною більш широкого формату файлів зображень SGI (SGI Image File Format). Нині припинила свою діяльність, компанія SGI (спочатку Silicon Graphics) була піонером в області високопродуктивних графічних станцій на базі Unix і розробила власний загальний растровий формат. Була опублікована повна специфікація реєстрового формату SGI.

файл .rgb являє собою кольорове растрове зображення RGB (24-бітний колір) в форматі SGI. Крім нестислого режиму формат SGI також передбачає можливість RLE-стиснення (Run Length Encoding - Групове кодування). В одному файлі .rgb може знаходитися одне растрове зображення.



RGB-файли SGI розпізнаються і підтримуються більшістю основних графічних редакторів і програм для перегляду в більшій частині користувальницьких середовищ. Крім .rgb растрові зображення SGI можуть мати інші розширення, а саме .rgba (32-бітові RGBA-зображення) і .sgi (загальне розширення).

В аналогічній якості розширення .rgb може іноді зустрічатися стосовно до рідкісного типовому формату кольорових растрових зображень Q0 (RGB, 24-бітний колір). Цей формат також розпізнається і підтримується більшістю основних графічних переглядачів / редакторів.

Програми для відкриття або конвертації RGB файлів

Ви можете відкрити файли RGB за допомогою наступних програм: 

RGB модель описує випромінювані кольори. Вона заснована на трьох основних (базових) кольорах: червоний (Red), зелений (Green) і синій (Blue). RGB-модель можна назвати "рідний" для дисплея. Інші кольори виходять поєднанням базових. Кольори такого типу називаються адитивними.

З малюнка видно, що поєднання зеленого і червоного дають жовтий колір, поєднання зеленого і синього - блакитний, а поєднання всіх трьох кольорів - білий. З цього можна зробити висновок про те, що кольори в RGB складаються субтрактивна.

Основні кольори взяті з біології людини. Тобто, ці кольори засновані на фізіологічної реакції людського ока на світло. Людське око має фоторецептор клітин, що реагують на найбільш зелений (М), жовто-зелений (L) і синьо-фіолетовий (S) світла ( максимальна довжин хвиль від 534 нм, 564 нм і 420 нм відповідно). Людський мозок може легко відрізнити широкий спектр різних кольорів на основі відмінностей в сигналах, отриманих від трьох хвиль.

Найбільш широко RGB колірна модель використовується в ЖК або плазмових дисплеях, таких як телевізор або монітор комп'ютера. Кожен піксель на дисплеї може бути представлений в інтерфейсі апаратних засобів (наприклад, графічні карти) в якості значень червоного, зеленого і синього. RGB значення змінюються в інтенсивності, які використовуються для наочності. Камери і сканери також працюють в тому ж порядку, вони захоплюють колір з датчиками, які реєструють різну інтенсивність RGB на кожен піксель.

В режимі 16 біт на піксель, також відомому як Highcolor, є або 5 біт на колір (часто згадується як 555 режим) або з додатковим бітом для зеленого кольору (відомий як 565 режим). Доповнено зелений колір через те, що людське око має здатність виявляти більше відтінків зеленого, ніж будь-якого іншого кольору.

RGB значення, представлені в режимі 24 біт на піксель (bpp), відомому також під ім'ям Truecolor, зазвичай виділяється три цілих значення від 0 до 255. Кожне з цих трьох чисел являє собою інтенсивність червоного, зеленого і синього відповідно.

У RGB - три канали: червоний, синій і зелений, тобто RGB - трьохканальна колірна модель. Кожен канал може набувати значень від 0 до 255 у десятковій або, що ближче до реальності, від 0 до FF в шістнадцятковій системах числення. Це пояснюється тим, що байт, яким кодується канал, та й взагалі будь-який байт складається з восьми бітів, а біт може приймати 2 значення 0 або 1, разом 28 \u003d 256. У RGB, наприклад, червоний колір може приймати 256 градацій: від чисто червоного (FF) до чорного (00). Таким чином нескладно підрахувати, що в моделі RGB міститься всього 2563 або 16777216 кольорів.

У RGB три канали, і кожен кодується 8-ю бітами. Максимальна, FF (або 255) значення дає чистий колір. Білий колір виходить шляхом поєднання всіх кольорів, точніше, їх граничних градацій. Код білого кольору \u003d FF (червоний) + FF (зелений) + FF (синій). Відповідно код чорного \u003d 000000. Код жовтого \u003d FFFF00, пурпурного \u003d FF00FF, блакитного \u003d 00FFFF.

Також є ще 32 і 48 бітні режими відображення квітів.

RGB не використовується для друку на папері, замість неї існує CMYK-колірний простір.

CMYK - це колірна модель використовується в кольорового друку. Колірна модель є математичною моделлю для опису кольорів цілими числами. CMYK модель побудована на блакитному, пурпуровому, жовтому і чорному кольорах.