Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2006.07.16;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.033 c
2-1151408939
Delphi basic
2006-06-27 15:48
2006.07.16
DBDate


3-1147627956
drucha
2006-05-14 21:32
2006.07.16
создание бд interbase


1-1149229801
Layner
2006-06-02 10:30
2006.07.16
Balloon Hint не хочет показываться :( В чем может быть дело..


2-1151336611
b.o.n.d.007
2006-06-26 19:43
2006.07.16
Не понимаю циклы. Помогите.


15-1150377136
syte_ser78
2006-06-15 17:12
2006.07.16
вдогонку о вопросе "как прогнать все переменные"





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский