比如想在图片左下角写上“12345”。

解决方案 »

  1.   

    我知道的一个方法是使用GDI+,
    下面是GDI+里面Bitmap对象的其中一个构造函数。Creates a Bitmap object based on a BITMAPINFO structure and an array of pixel data.SyntaxBitmap(          const BITMAPINFO *gdiBitmapInfo,
        VOID *gdiBitmapData
    );
    ParametersgdiBitmapInfo
    [in] Pointer to a Microsoft® Windows® Graphics Device Interface (GDI)BITMAPINFO structure. This structure defines several bitmap attributes, such as size and pixel format. The BITMAPINFO structure is defined in Wingdi.h. 
    gdiBitmapData
    [in] Pointer to an array of bytes that contains the pixel data. 上面的两个参数都是可以从ISampleGrabberCB的SampleCB方法中获得的,
    得到一个当前帧的Bitmap对象后,就可以用GDI+的其它方法在上面写字画线等等,
    最后可以用Bitmap的Save方法保存成一个BMP文件。
      

  2.   

    自己做的示例图片,左上角写上了名字:http://blog.csdn.net/images/blog_csdn_net/rogeryi/89150/o_bmsave.JPG
      

  3.   

    图片很漂亮啊,可我没有用过GDI+,能不能提供例子代码?
      

  4.   

    //一个Helper Function,获得文件格式的CLSID,MSDN里面就有int GetEncoderClsid(const WCHAR* format, CLSID* pClsid)
    {
       UINT  num = 0;          // number of image encoders
       UINT  size = 0;         // size of the image encoder array in bytes   ImageCodecInfo* pImageCodecInfo = NULL;   GetImageEncodersSize(&num, &size);
       if(size == 0)
          return -1;  // Failure   pImageCodecInfo = (ImageCodecInfo*)(malloc(size));
       if(pImageCodecInfo == NULL)
          return -1;  // Failure   GetImageEncoders(num, size, pImageCodecInfo);   for(UINT j = 0; j < num; ++j)
       {
          if( wcscmp(pImageCodecInfo[j].MimeType, format) == 0 )
          {
             *pClsid = pImageCodecInfo[j].Clsid;
             free(pImageCodecInfo);
             return j;  // Success
          }    
       }   free(pImageCodecInfo);
       return -1;  // Failure
    }
    ---------------------------------------------
                      BITMAPINFO bi;
    bi.bmiHeader = pVideoHeader->bmiHeader;//pVideoHeader可以从MediaType中获得(pbFormat) Bitmap bmSave(&bi, 
    static_cast<void *>(rgb_buffer_pointer));//rgb_buffer_pointer为实际的RGB数据缓冲区 Graphics gp(&bmSave);
    FontFamily  fontFamily(L"Times New Roman");
    Gdiplus::Font        font(&fontFamily, 24, FontStyleRegular, UnitPixel); PointF origin(0.0f, 0.0f);
    SolidBrush blackBrush(Color(255, 0, 0, 0)); gp.DrawString(L"Roger.Yi",8,
    &font,
    origin,
    &blackBrush); CLSID bmpClsid;
    GetEncoderClsid(L"image/bmp", &bmpClsid); bmSave.Save(L"bmsave.bmp",&bmpClsid,NULL);
      

  5.   

    不知道怎么搞,我的环境是VC6+DirectX8.
    刚从微软下个gdiplus_dnld.exe,解出来只有dll,怎么用啊。