Russian Qt Forum
Сентябрь 30, 2024, 16:20 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Работа с QImage  (Прочитано 7296 раз)
XXCoder
Гость
« : Февраль 22, 2007, 12:24 »

может у кого-нибудь есть пример работы с пикселями QImage... или еще какая инфа, плиз помогите.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #1 : Февраль 22, 2007, 14:34 »

в смысле работа с пикселями ? Улыбающийся
Записан
Mixolap
Гость
« Ответ #2 : Февраль 22, 2007, 20:17 »

QImage img;
....
QPainter pnt(&img)

делай с ним что захочешь

pnt.end();
Записан
QCasper
Гость
« Ответ #3 : Февраль 22, 2007, 21:38 »

вот тебе пример преобразования картинки из GRB в YUV

Код:
bool DDrawOverlay::render(const QImage & img) {
if (!canRender) return false;

ZeroMemory(&ddsd, sizeof(ddsd));
ddsd.dwSize = sizeof(ddsd);

HRESULT r = lpOverlay->Lock(0, &ddsd,
DDLOCK_WAIT | DDLOCK_WRITEONLY, 0);
if (r != DD_OK)
{
return false;
}
BYTE* surfbits = (BYTE*)ddsd.lpSurface;
WORD* pixptr;

        unsigned int* imgBits = (unsigned int*)(img.bits());

int R0,R1, G0,G1, B0,B1;
WORD Y, U, V;

for(int i = 0; i < m_h; i++)
{
pixptr = (WORD*)surfbits;
for (int p = 0; p < m_w; p+=2)
{
R0 = (*imgBits & 0x00FF0000) >> 16;
G0 = (*imgBits & 0x0000FF00) >> 8;
B0 = *imgBits++ & 0x000000FF;

R1 = (*imgBits & 0x00FF0000) >> 16;
G1 = (*imgBits & 0x0000FF00) >> 8;
B1 = *imgBits++ & 0x000000FF;

// U0 Y0 V0 Y1  U2 Y2 V2 Y3  U4 Y4 V4 Y5

U = WORD(((-148*R0 - 291*G0 + 439*B0) >> 10) + 128);
Y = WORD(((257*R0 + 504*G0 + 98*B0) >> 10) + 36) << 8;
V = WORD( ((439*R0 - 368*G0 - 71*B0) >> 10) + 128);
*pixptr++ = U|Y;

Y = WORD(((257*R1 + 504*G1 + 98*B1) >> 10) + 36) << 8;
*pixptr++ = V|Y;

}
surfbits += ddsd.lPitch;
}
lpOverlay->Unlock(0);

return UpdateOverlay();
}
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.101 секунд. Запросов: 23.