алфа канал
5 отговора
0 прегледа
алфа канал
В .tga и .tiff файловете може да се задава освен RGB и алфа канал, с помощта на който се дефинират степени на прозрачност на части от изображението.
(от PhotoShop например).
Как мога да покажа такъв файл в Delphi?
Има ли някаква компонента за такова нещо?
Или поне някаква идея какво мога да направя?
Ще съм много благодарен...
(от 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
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
Re: алфа
Много благодаря за вниманието и туда който си си направил!
Обаче този подход е много бавен, представи си какво става ако тръгнеш да местиш такава картинка и презичисляваш всеки пиксел по формулата.
А ако искаш да обработваш 24-битов цвят?
Мисля си, че има някаква хитринка с ADD, OR, XOR последователност...
Знам ли?!
Обаче този подход е много бавен, представи си какво става ако тръгнеш да местиш такава картинка и презичисляваш всеки пиксел по формулата.
А ако искаш да обработваш 24-битов цвят?
Мисля си, че има някаква хитринка с ADD, OR, XOR последователност...
Знам ли?!
Re: алфа
Ами 24 бита се разглеждат като 3 байта (все още
)
Не очаквам да е много бавно, поне във фотошоп не е. Формулата се опимизира, като й махнеш деленето.
Ако искаш, мога да ти напиша малка програмка за алфа-блендинга, ама ще е на c++, не знам дали ще разбереш нещо.
А "хитринката с ADD, OR, XOR" не е алфа-блендинг а просто маскиране, полезно е ако искаш за "затвориш" картинка във векторен полигон. Програмката, която го демонстрира, се намира тук: nanev.narod.ru/Rgn.zip. Писах я преди време за един друг образ от форума, но за съжаление, в повечето случаи не може да се изтегли.
Si Vis Pacem, Para Bellum
Не очаквам да е много бавно, поне във фотошоп не е. Формулата се опимизира, като й махнеш деленето.
Ако искаш, мога да ти напиша малка програмка за алфа-блендинга, ама ще е на c++, не знам дали ще разбереш нещо.
А "хитринката с ADD, OR, XOR" не е алфа-блендинг а просто маскиране, полезно е ако искаш за "затвориш" картинка във векторен полигон. Програмката, която го демонстрира, се намира тук: nanev.narod.ru/Rgn.zip. Писах я преди време за един друг образ от форума, но за съжаление, в повечето случаи не може да се изтегли.
Si Vis Pacem, Para Bellum
Re: алфа канал
Как се взима пиксел от picture освен с GetPixel, която връща цветът само от видима на екрана картина?