Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.16;
Скачать: CL | DM;

Вниз

4bit -> 8bit   Найти похожие ветки 

 
TButton ©   (2006-06-01 07:11) [0]

для экономии места храню два байта (альфу и яркость пиксела) в одном урезая каждый из них до 4х бит (это действительно необходимо, потому что пикселей та ещё туча). урезание происходит безболезненно и быстро путём применения shr 4
градация 0..255 превращается в градацию 0..15
т.е. происходит div 16
с этим проблем нет
проблемы возникают при возвращении и к градации 0..255
это не критично для яркости, но очень критично для альфы.
потому что то, что было альфой 255 (непрозрачный) при урезании превратилось в 15 (непрозрачный), а после возвращения (shl 4) превратилось в 240 (почти непрозрачный)

т.е. техника возврата к оригиналу путём домножения на 16 не подходит

есть вариант решения с использованием чисел с плавающей точкой, но он не подходит ввиду меньшей скорости, а скорость очень критична (ещё раз напомню что пикселей - немеряно)

нужен вариант решения

в двух словах:
максимально быстро
преобразовать число 0..15 в соответствующее 0..255
так, чтобы 0 соответствовал 0, а 15 соответствовало 255

* надеюсь, что вам удастся разобрать мою писанину
** надеюсь, что вы сможете подсказать мне подходящее решение


 
MBo ©   (2006-06-01 07:50) [1]

А на 17 умножить не хочешь?  ;))
b := b + b shl 4;


 
TButton ©   (2006-06-01 07:57) [2]

смешно =)
спасибо.


 
Альф   (2006-06-01 10:11) [3]

Немножко дурацкий вариант - но в Вашем случае позволит регулировать еще и кривую (ломаную :) ) для альфы
array [0..15]of byte = (0,... ,255);


 
TButton ©   (2006-06-01 10:31) [4]

вам тоже спасибо, но меня вполне удовлетворил предыдущий ответ =)


 
Petrovka 38   (2006-06-02 00:35) [5]

Удалено модератором
Примечание: нехорошее слово


 
antonn ©   (2006-06-02 15:17) [6]

Удалено модератором
Примечание: согласен


 
Cash ©   (2006-06-02 15:29) [7]

Удалено модератором
Примечание: уже здесь


 
ecm ©   (2006-06-02 19:28) [8]


> максимально быстро
> преобразовать число 0..15 в соответствующее 0..255

Сделать массив 0..15 и занести туда то что тебе понравится
потом делать преобразование по таблице - быстрее не бывает
:))» Palladin:» Отнюдь, cм [1]


 
ecm ©   (2006-06-02 19:30) [9]

З.Ы
const
 Table : Array[0..15] of Byte = (.....

Var0_255 := Table[Var0_15];



Страницы: 1 вся ветка

Текущий архив: 2006.07.16;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.03 c
1-1149022059
MZUser
2006-05-31 00:47
2006.07.16
Загрузка DLL напрямую


2-1151467285
Freze_Kati
2006-06-28 08:01
2006.07.16
Как вставить часть французского текста?


1-1149523008
Valerio
2006-06-05 19:56
2006.07.16
Как правильно описать свойство класса?


15-1150206347
palva
2006-06-13 17:45
2006.07.16
Как поставить плагин к DJVU


2-1151418022
manevil
2006-06-27 18:20
2006.07.16
Ожидание выполнения задачи