我现在要求做一个不知道图片格式,只知道是图片,读入到内存后显示。需要用
DWORD GetFileSize(CString strFilePath)
{
CFile file;
CFileStatus Status;

if (file.GetStatus (strFilePath, Status)) 
return Status.m_size;
  else
    return 0;
}int nSize=GetFileSize("图片地址");
char *pFile=new char[nSize];
HFILE hFile=_lopen("图片地址",2);
int iBytes=_lread(hFile,pFile,nSize);
_close(hFile);
这个读取图片后显示出来,大家有没有解决方法呢?谢谢各路高手

解决方案 »

  1.   

    Google 一下 CxImage 类,可以加载多种格式的图片
      

  2.   

    你要打开显示什么格式的图片? bmp ?这个容易啊,网上一堆源码。其它格式的话,可以用第三方解码库来实现显示
      

  3.   

    你搜一下那个jpg通过内存显示的源码,那个符合你要求,至少可以显示bmp,gif,jpg,我估计不能显示的很少,你看了他那个方法就知道了
      

  4.   

    可以用opencv来实现,一个函数就可以打开多种格式的图片并显示
      

  5.   

    根据文件扩展名来解析呗
    GDI+的Image类
      

  6.   


          If FileExist(FileName) = True Then
            Set Bmp = New BmpParser
            LoadPictureFromFile = Bmp.LoadPictureFromFile(FileName, Me)
            Set Bmp = Nothing
            If LoadPictureFromFile = False Then
                Set Jpg = New JpgParser
                LoadPictureFromFile = Jpg.LoadPictureFromFile(FileName, Me)
                Set Jpg = Nothing
                If LoadPictureFromFile = False Then
                    Set Png = New PngParser
                    LoadPictureFromFile = Png.LoadPictureFromFile(FileName, Me)
                    Set Png = Nothing
                    If LoadPictureFromFile = False Then
                        Set Gif = New GifParser
                        LoadPictureFromFile = Gif.LoadPictureFromFile(FileName, Me, Index)
                        Set Gif = Nothing
                        If LoadPictureFromFile = False Then
                            Set Tiff = New TifParser
                            LoadPictureFromFile = Tiff.LoadPictureFromFile(FileName, Me, Index)
                            Set Tiff = Nothing
                            If LoadPictureFromFile = False Then
                                Set Ico = New IcoParser
                                LoadPictureFromFile = Ico.LoadPictureFromFile(FileName, Me, Index)
                                Set Ico = Nothing
                                If LoadPictureFromFile = False Then
                                    Set Wmf = New WmfParser
                                    LoadPictureFromFile = Wmf.LoadPictureFromFile(FileName, Me)
                                    Set Wmf = Nothing
                                    If LoadPictureFromFile = False Then
                                        Set Emf = New EmfParser
                                        LoadPictureFromFile = Emf.LoadPictureFromFile(FileName, Me)
                                        Set Emf = Nothing
                                        If LoadPictureFromFile = False Then
                                            Set Psd = New PsdParser
                                            LoadPictureFromFile = Psd.LoadPictureFromFile(FileName, Me)
                                            Set Psd = Nothing
                                            If LoadPictureFromFile = False Then
                                                Set Tga = New TgaParser
                                                LoadPictureFromFile = Tga.LoadPictureFromFile(FileName, Me)
                                                Set Tga = Nothing
                                                If LoadPictureFromFile = False Then
                                                    Set Dds = New DdsParser
                                                    LoadPictureFromFile = Dds.LoadPictureFromFile(FileName, Me)
                                                    Set Dds = Nothing
                                                    If LoadPictureFromFile = False Then
                                                        Set Pcx = New PcxParser
                                                        LoadPictureFromFile = Pcx.LoadPictureFromFile(FileName, Me)
                                                        Set Pcx = Nothing
                                                        If LoadPictureFromFile = False Then
                                                            Set Pnm = New PnmParser
                                                            LoadPictureFromFile = Pnm.LoadPictureFromFile(FileName, Me)
                                                            Set Pnm = Nothing
                                                            If LoadPictureFromFile = False Then
                                                                Set Sct = New SctParser
                                                                LoadPictureFromFile = Sct.LoadPictureFromFile(FileName, Me)
                                                                Set Sct = Nothing
                                                                If LoadPictureFromFile = False Then
                                                                    Set Sgi = New SgiParser
                                                                    LoadPictureFromFile = Sgi.LoadPictureFromFile(FileName, Me)
                                                                    Set Sgi = Nothing
                                                                    If LoadPictureFromFile = False Then
                                                                        Set Ras = New RasParser
                                                                        LoadPictureFromFile = Ras.LoadPictureFromFile(FileName, Me)
                                                                        Set Ras = Nothing
                                                                        If LoadPictureFromFile = False Then
                                                                            Set Rsb = New RsbParser
                                                                            LoadPictureFromFile = Rsb.LoadPictureFromFile(FileName, Me)
                                                                            Set Rsb = Nothing
                                                                            If LoadPictureFromFile = False Then
                                                                                Set Wbm = New WbmParser
                                                                                LoadPictureFromFile = Wbm.LoadPictureFromFile(FileName, Me)
                                                                                Set Wbm = Nothing
                                                                                If LoadPictureFromFile = False Then
                                                                                    Set Iff = New IffParser
                                                                                    LoadPictureFromFile = Iff.LoadPictureFromFile(FileName, Me)
                                                                                    Set Iff = Nothing
                                                                                    If LoadPictureFromFile = False Then
                                                                                        Set Xbm = New XbmParser
                                                                                        LoadPictureFromFile = Xbm.LoadPictureFromFile(FileName, Me)
                                                                                        Set Xbm = Nothing
                                                                                        If LoadPictureFromFile = False Then
                                                                                            Set Pcd = New PcdParser
                                                                                            LoadPictureFromFile = Pcd.LoadPictureFromFile(FileName, Me)
                                                                                            Set Pcd = Nothing
                                                                                            If LoadPictureFromFile = False Then
                                                                                                Set Fit = New FitParser
                                                                                                LoadPictureFromFile = Fit.LoadPictureFromFile(FileName, Me)
                                                                                                Set Fit = Nothing
                                                                                                If LoadPictureFromFile = False Then
                                                                                                    Set Dcm = New DcmParser
                                                                                                    LoadPictureFromFile = Dcm.LoadPictureFromFile(FileName, Me)
                                                                                                    Set Dcm = Nothing
                                                                                                End If
                                                                                            End If
                                                                                        End If
                                                                                    End If
                                                                                End If
                                                                            End If
                                                                        End If
                                                                    End If
                                                                End If
                                                            End If
                                                        End If
                                                    End If
                                                End If
                                            End If
                                        End If
                                    End If
                                End If
                            End If
                        End If
                    End If
                End If
            End If
        End If
    这样的话是个庞大的工作。
      

  7.   

    HRSRC hResource = ::FindResource(hInst, pName, pType);
    if (!hResource)
    return false;

    DWORD imageSize = ::SizeofResource(hInst, hResource);
    if (!imageSize)
    return false; const void* pResourceData = ::LockResource(::LoadResource(hInst, hResource));
    if (!pResourceData)
    return false; m_hBuffer  = ::GlobalAlloc(GMEM_MOVEABLE, imageSize);
    if (m_hBuffer)
    {
    void* pBuffer = ::GlobalLock(m_hBuffer);
    if (pBuffer)
    {
    CopyMemory(pBuffer, pResourceData, imageSize); IStream* pStream = NULL;
    if (::CreateStreamOnHGlobal(m_hBuffer, FALSE, &pStream) == S_OK)
    {
    m_pBitmap = Gdiplus::Bitmap::FromStream(pStream);
    pStream->Release();
    if (m_pBitmap)

    if (m_pBitmap->GetLastStatus() == Gdiplus::Ok)
    return true; delete m_pBitmap;
    m_pBitmap = NULL;
    }
    }
    ::GlobalUnlock(m_hBuffer);
    }
    ::GlobalFree(m_hBuffer);
    m_hBuffer = NULL;
    }