GetEncoderClsid函数,方便的获得编码器的CLSID。

    技术2025-12-07  1

    记录该函数,方便以后查询。 

    int GetEncoderClsid(const WCHAR* format, CLSID* pClsid){ UINT num= 0; UINT size= 0;

     ImageCodecInfo* pImageCodecInfo= NULL;

     GetImageEncodersSize(&num, &size); if(size== 0) {  return -1; } pImageCodecInfo= (ImageCodecInfo*)(malloc(size)); if(pImageCodecInfo== NULL) {  return -1; }

     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;  } }

     free(pImageCodecInfo); return -1;}

    该函数使用方法很方便,如下面的代码就分别获得5中图像编码器的CLSID

    CLSID encoderClsid

        GetEncoderClsid(L"image/png", &encoderClsid);    //png

        GetEncoderClsid(L"image/bmp", &encoderClsid);

        GetEncoderClsid(L"image/gif", &encoderClsid);

        GetEncoderClsid(L"image/jpeg", &encoderClsid);

        GetEncoderClsid(L"image/tiff", &encoderClsid);

    最新回复(0)