如题

解决方案 »

  1.   

    用CImage类,直接Load就可以了。
      

  2.   

    直接使用CImage Load和Save就行了
    msdn里面SimpleImage例子,楼主可以看看
      

  3.   

    VC6下面可以这么处理:IPicture *pPic; 
    IStream *pStm; CFileStatus fstatus; 
    CFile file; 
    LONG cb; if (file.Open("c:/test.jpg",CFile::modeRead)&&file.GetStatus("c:/test.jpg", 
    fstatus)&& 
    ((cb = fstatus.m_size) != -1)) 

    HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, cb); 
    LPVOID pvData = NULL; 
    if (hGlobal != NULL) 

    if ((pvData = GlobalLock(hGlobal)) != NULL) 

    file.ReadHuge(pvData, cb); 
    GlobalUnlock(hGlobal); 
    CreateStreamOnHGlobal(hGlobal, TRUE, &pStm); if(SUCCEEDED(OleLoadPicture(pStm,fstatus.m_size,TRUE,IID_IPicture,(LPVOID* 
    )&pPic))) 

    OLE_XSIZE_HIMETRIC hmWidth; 
    OLE_YSIZE_HIMETRIC hmHeight; pPic->get_Width(&hmWidth); 
    pPic->get_Height(&hmHeight); double fX,fY; 
    fX = (double)pDC->GetDeviceCaps(HORZRES)*(double)hmWidth/((double)pDC->Ge 
    tDeviceCaps(HORZSIZE)*100.0); 
    fY = (double)pDC->GetDeviceCaps(VERTRES)*(double)hmHeight/((double)pDC->G 
    etDeviceCaps(VERTSIZE)*100.0); 
    if(FAILED(pPic->Render(*pDC,0,0,(DWORD)fX,(DWORD)fY,0,hmHeight,hmWidth,-h 
    mHeight,NULL))) 
    AfxMessageBox("Failed To Render The picture!"); 
    pPic->Release(); 

    else 
    AfxMessageBox("Error Loading Picture From Stream!"); 



    else 
    AfxMessageBox("Can"t Open Image File!"); 
    }
      

  4.   

    或者装一个platform sdk,然后用GDI+
      

  5.   

    LZ是在图像处理方面的吗?
    我也发现了相同的问题
    把图片用WINDOWS里面的画板打开
    点击另存为 可以选择保存的格式
    保存256色BMP格式 可以加载位图。
    我尝试过
    不知道对你的问题有无帮助!!
      

  6.   

    不错,关注ing!现在CSDN的收藏没有以前方便了,是用啥子“天天网摘”,只好用这种方式来留个记号了。
      

  7.   

    IPicture *pPic;CFileStatus fstatus;
    CFile file;
    LONG cb;if (file.Open("c:/test.jpg",CFile::modeRead)&&file.GetStatus("c:/test.jpg",
    fstatus)&&
    ((cb = fstatus.m_size) != -1))
    {
    HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, cb);
    LPVOID pvData = NULL;
    if (hGlobal != NULL)
    {
    if ((pvData = GlobalLock(hGlobal)) != NULL)
    {
    file.ReadHuge(pvData, cb);
    GlobalUnlock(hGlobal);
    CreateStreamOnHGlobal(hGlobal, TRUE, &pStm);if(SUCCEEDED(OleLoadPicture(pStm,fstatus.m_size,TRUE,IID_IPicture,(LPVOID*
    )&pPic)))
    这一大段可以简化成OleLoadPicturePath
      

  8.   

    //用gdi+
        Image image(L"a.jpg");
        CLSID clsid;
        GetEncoderClsid(L"image/bmp", &clsid);    image.Save(L"b.bmp", &clsid);//
    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
    }