How to load FIBITMAP and convert it to HBITMAP

本文介绍了一种利用FreeImage库加载位图文件的方法,并详细解释了如何将加载的图像转换为HBITMAP格式,以便在Windows应用程序中使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HBITMAP GenericLoadBitmap(string &filepath)
{
   FREE_IMAGE_FORMAT fif = FIF_UNKNOWN;
   // check the file signature and deduce its format
   // (the second argument is currently not used by FreeImage)
   fif = FreeImage_GetFileType(filepath.c_str(), 0);
   if(fif == FIF_UNKNOWN) {
      // no signature ?
      // try to guess the file format from the file extension
      fif = FreeImage_GetFIFFromFilename(filepath.c_str());
   }
   // check that the plugin has reading capabilities ...
   if((fif != FIF_UNKNOWN) && FreeImage_FIFSupportsReading(fif)) {
      // ok, let's load the file
      FIBITMAP *dib = FreeImage_Load(fif, filepath.c_str(), 0);

      // unless a bad file format, we are done !
      CDC *pDC = GetDC();
      HBITMAP bitmap = CreateDIBitmap(pDC->GetSafeHdc(), FreeImage_GetInfoHeader(dib),
         CBM_INIT, FreeImage_GetBits(dib), FreeImage_GetInfo(dib), DIB_RGB_COLORS);
      ReleaseDC(pDC);

      FreeImage_Unload(dib);
      return bitmap;
   }
   return NULL;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值