请教:位图压缩的算法

请问:位图压缩的算法
我的位图是24位的,因为太大,传输不方便,我想压缩,
请问:这种位图一般是用哪种算法压缩?有没有源代码?
(要有压缩与解压缩的)


------解决方案--------------------
你可以压缩成YUV420格式,解压与压缩网上都有相关代码。
当然,现在用于流传输H264格式也不错。压缩率高但失真大。ffmpeg是个很好的编码与解码库,可尝试。
------解决方案--------------------
C/C++ code

IStream* CDXGraph::StretchPic(const WCHAR *path, const WCHAR *format, int width, int heigh)
{
    Bitmap orgpic(path) ;  
    Image *Despic = orgpic.GetThumbnailImage(width,heigh) ;  
    
    IStream* pstm = NULL;   
    
    CLSID encoderClsid ;  
    GetEncoderClsid(format,&encoderClsid) ;  
    CString name;
    
        name = "Debug\\1.bmp";
    
    Status sta =Despic->Save(name.AllocSysString(),&encoderClsid,0) ; //Despic->Save(pstm, &encoderClsid,0);  
    if (sta == Ok)  
    {  
        return pstm ;  
    }  
    return NULL ;  
}

int CDXGraph::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;   
}

------解决方案--------------------
传输H264格式也不错。压缩率高但失真大。ffmpeg是个很好的编码与解码库,可尝试。
------解决方案--------------------
用CXImage把bmp转为jpg
------解决方案--------------------
普通图片的话搞个毛的h264啊,搞个毛的YUV420啊!!
下载一个jpeg的库压缩成jpg就完事了