我想截取AVI文件的某一贞图,上网查了一下看到了这个:
http://topic.csdn.net/t/20030723/15/2062420.html
可我用的时候发现我截取的图有偏移,右边的一部分跑到左边来了,而且某些文件还会发生内寸读取错误.哪位大哥知道怎么会事的,说一下.或者知道怎么样截图的说一声,谢谢了.

解决方案 »

  1.   

    最近很多人问抓图的,方法很多,给你个有源代码的http://www.vckbase.com/document/viewdoc/?id=976
      

  2.   

    Ctrl C  + Ctrl V
      

  3.   

    我试过用IMEDIADET,可是我截的图居然是黑的,什么都没有啊?是不是我哪没有写对啊?
      

  4.   

    LRESULT DrawFrame(Graphics *graph,double index,RectF rect)
    { long num;
    pMediaDet->get_OutputStreams(&num); long size;
    int width=320,height=240;
    pMediaDet->GetBitmapBits(index,&size,0,width,height); char *pBuffer = new char[size];
    pMediaDet->GetBitmapBits(index, 0, pBuffer, width, height);
    BITMAPINFOHEADER *bmih = (BITMAPINFOHEADER*)pBuffer;
    HDC hdcDest = ::GetDC(*this); // Find the address of the start of the image data.
    void *pData = pBuffer + sizeof(BITMAPINFOHEADER); // Note: In general a BITMAPINFOHEADER can include extra color
    // information at the end, so calculating the offset to the image
    // data is not generally correct. However, the IMediaDet interface
    // always returns an RGB-24 image with no extra color information. BITMAPINFO bmi;
    ZeroMemory(&bmi, sizeof(BITMAPINFO));
    CopyMemory(&(bmi.bmiHeader), bmih, sizeof(BITMAPINFOHEADER));
    HBITMAP hBitmap = CreateDIBitmap(hdcDest, bmih, CBM_INIT, 
    pData, &bmi, DIB_RGB_COLORS); Bitmap bitmap((BITMAPINFO*)bmih,pData);
    graph->DrawImage(&bitmap,rect); //HDC hMem;
    //hMem=::CreateCompatibleDC(NULL);
    //::SelectObject(hMem,hBitmap);
    //::BitBlt(hdcDest,0,0,bmi.bmiHeader.biWidth,bmi.bmiHeader.biHeight,hMem,0,0,SRCCOPY); delete[] pBuffer; return 0;
    }
      

  5.   

    我发现只有MPG文件能行,我改成AVI文件后抓的图就是黑的了,而我现在就是要抓AVI文件啊