|
Тема
|
алфа канал
|
|
Автор |
Lizard (непознат
) |
Публикувано | 21.02.01 13:39 |
|
В .tga и .tiff файловете може да се задава освен RGB и алфа канал, с помощта на който се дефинират степени на прозрачност на части от изображението.
(от PhotoShop например).
Как мога да покажа такъв файл в Delphi?
Има ли някаква компонента за такова нещо?
Или поне някаква идея какво мога да направя?
Ще съм много благодарен...
| |
|
Значи специално за теб питах един колега, който е правил филтъра. Да почерпиш.
BYTE pixImage;
BYTE pixBackground;
BYTE pixResult;
BYTE alpha;
pixResult = pixImage * (alpha / 255) + pixBackground * (1 - (alpha / 255))
това при положение, че 0 стойност на alpha ти е пълна прозрачност, а 255 - 100% плътност.
Si Vis Pacem, Para Bellum
| |
|
Много благодаря за вниманието и туда който си си направил!
Обаче този подход е много бавен, представи си какво става ако тръгнеш да местиш такава картинка и презичисляваш всеки пиксел по формулата.
А ако искаш да обработваш 24-битов цвят?
Мисля си, че има някаква хитринка с ADD, OR, XOR последователност...
Знам ли?!
| |
|
Ами 24 бита се разглеждат като 3 байта (все още )
Не очаквам да е много бавно, поне във фотошоп не е. Формулата се опимизира, като й махнеш деленето.
Ако искаш, мога да ти напиша малка програмка за алфа-блендинга, ама ще е на c++, не знам дали ще разбереш нещо.
А "хитринката с ADD, OR, XOR" не е алфа-блендинг а просто маскиране, полезно е ако искаш за "затвориш" картинка във векторен полигон. Програмката, която го демонстрира, се намира тук: . Писах я преди време за един друг образ от форума, но за съжаление, в повечето случаи не може да се изтегли.
Si Vis Pacem, Para Bellum
| |
Тема
|
Re: алфа канал
[re: Lizard]
|
|
Автор | alpha (Нерегистриран) |
Публикувано | 23.02.01 20:44 |
|
Как се взима пиксел от picture освен с GetPixel, която връща цветът само от видима на екрана картина?
| |
|
Благодаря ти за отделеното време и внимание!
| |
|
|
|
|