Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.02.2010, 13:41   #1
пауэрлифтинг
Заблокирован
 
Регистрация: 11.12.2009
Сообщений: 133
Стрелка кадр из avi

почему у меня кадр из avi файла черно-белый получаетьса?
Код:
 AVIFileInit;
       AVIStreamOpenFromFile(AviStream, 'c:\1.avi', streamtypeVIDEO,0,OF_READ, nil);
       Frame := AVIStreamGetFrameOpen(AviStream, nil);
       pbmi := AVIStreamgetFrame(Frame, CurrFrame);
       bits := Pointer(Integer(pbmi)+ SizeOf(TBITMAPINFOHEADER) );
TmpBmp.Handle := CreateDIBitmap(
// Вспомогательным контекстом служит HDC поверхности
wrkDC,
pbmi^, // Адрес размера растра и формата данных
CBM_INIT, // Флаг инициализации
bits, // Данные для инициализации
PBITMAPINFO(pbmi)^, // Данные о формате цвета
DIB_RGB_COLORS); // Флаг цветности растра
  Application.ProcessMessages;
form1.Image1.Canvas.Draw(0,0,TmpBmp);
пауэрлифтинг вне форума Ответить с цитированием
Старый 04.02.2010, 14:19   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

ради интереса на других avi-ках пробовали? у меня цветные...
Код:
var AVIStream: pAVIStream;
    frame: pGETFRAME;
    pbmi:pBITMAPINFOHEADER;
    bits: PChar;
    hBmp: HBITMAP;
    AviInfo: TAVIFILEINFO;
    TmpBmp: TBitmap;
    DC_Handle: HDC;
begin
 AVIFileInit;
 AVIStreamOpenFromFile(AviStream, '1.avi', streamtypeVIDEO,0,OF_READ, nil);
 Frame := AVIStreamGetFrameOpen(AviStream, nil);
 pbmi := AVIStreamgetFrame(Frame, 5);
 bits := Pointer(Integer(pbmi)+ SizeOf(TBITMAPINFOHEADER) );


 TmpBmp:= TBitmap.Create;
 TmpBmp.Height:= pbmi.biHeight;
 TmpBmp.Width := pbmi.biWidth;
 bits:= Pointer(Integer(pbmi) + SizeOf(TBITMAPINFOHEADER));

 DC_Handle:= CreateDC('Display', nil, nil, nil);
 try
  hBmp:= CreateDIBitmap(DC_Handle, //handle device context
                        pbmi^,              //address bitmap size and format data
                        CBM_INIT,           //flag
                        bits,               //address initialization data
                        PBITMAPINFO(pbmi)^, //address of bitmap color-format data
                        DIB_RGB_COLORS);    //color-data usage
 finally DeleteDC(DC_Handle);end;
 TmpBmp.Handle:= hBmp;
 Image1.Picture.Bitmap.Assign(TmpBmp)
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 04.02.2010, 14:50   #3
пауэрлифтинг
Заблокирован
 
Регистрация: 11.12.2009
Сообщений: 133
По умолчанию

твой код работает выводит по цветному. спасибо
пауэрлифтинг вне форума Ответить с цитированием
Старый 04.02.2010, 14:53   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

скорее вы забыли инициализировать что-то... что сказать не могу, коду у вас неполный.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
чтение AVI пауэрлифтинг Общие вопросы Delphi 1 02.02.2010 13:23
Сохраняется ли 25-й кадр при оцифровке? Altera Свободное общение 28 14.12.2009 07:38
Создаем программу "25 кадр" Cezar Фриланс 17 25.06.2009 16:40
AVI SLIMMUS Мультимедиа в Delphi 2 29.03.2009 16:21
Анимация AVI Hottabych Мультимедиа в Delphi 5 16.03.2008 16:10