алфа канал

5 отговора 0 прегледа
#1

алфа канал

В .tga и .tiff файловете може да се задава освен RGB и алфа канал, с помощта на който се дефинират степени на прозрачност на части от изображението.
(от PhotoShop например).
Как мога да покажа такъв файл в Delphi?
Има ли някаква компонента за такова нещо?
Или поне някаква идея какво мога да направя?
Ще съм много благодарен...

Отговор
в отговор на Lizard #2

алфа

Значи специално за теб питах един колега, който е правил филтъра. Да почерпиш.

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
Отговор
в отговор на MиГ-31 #3

Re: алфа

Много благодаря за вниманието и туда който си си направил!
Обаче този подход е много бавен, представи си какво става ако тръгнеш да местиш такава картинка и презичисляваш всеки пиксел по формулата.
А ако искаш да обработваш 24-битов цвят?
Мисля си, че има някаква хитринка с ADD, OR, XOR последователност...
Знам ли?!

Отговор
в отговор на Lizard #4

Re: алфа

Ами 24 бита се разглеждат като 3 байта (все още )
Не очаквам да е много бавно, поне във фотошоп не е. Формулата се опимизира, като й махнеш деленето.
Ако искаш, мога да ти напиша малка програмка за алфа-блендинга, ама ще е на c++, не знам дали ще разбереш нещо.
А "хитринката с ADD, OR, XOR" не е алфа-блендинг а просто маскиране, полезно е ако искаш за "затвориш" картинка във векторен полигон. Програмката, която го демонстрира, се намира тук: nanev.narod.ru/Rgn.zip. Писах я преди време за един друг образ от форума, но за съжаление, в повечето случаи не може да се изтегли.

Si Vis Pacem, Para Bellum
Отговор
в отговор на Lizard #5

Re: алфа канал

Как се взима пиксел от picture освен с GetPixel, която връща цветът само от видима на екрана картина?

Отговор
в отговор на MиГ-31 #6

10x

Благодаря ти за отделеното време и внимание!


Отговор