• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

        常用的圖象處理函數的整理

        常用的圖象處理函數的整理

        更新時間:2022-05-02 文章作者:未知 信息來源:網絡 閱讀次數:

        鄧振波

          在Visual C++中,對圖象操作的功能所能提供的函數是比較弱的,我在實踐中收集掌握了一些圖象出來的方法與技巧,總結出一個COperateBitmap類,可以實現方便的對圖象的讀取、保存、剪貼板操作、DIB和DDB的轉換,下面列出頭文件,工程文件我把它寫成了一個MFC擴展DLL。可以點擊 這里 下載。
          1、方便從磁盤裝載各種圖形格式(JPG、BMP、Gif等)文件,并得到圖象大小和相應位圖的句柄,從而可以方便的操作各種圖像格式, 無需了解各種圖象的格式,以及相應的壓縮解壓算法,得到的位圖句柄, 可以方便的在VC中進行各種操作。
          2、把位圖畫到DC上,方便的把位圖畫到設備DC上,無需復雜的SelectObject等
          3、通過位圖建立區域,可以生成各種形狀的窗口
          4、方便的兩個位圖復制操作,支持部分區域拷貝
          5、不用StretchBlt函數,直接改變位圖的大小,StretchBlt只改變顯示的大小,實際的數據并沒有發生變化,本類中的ScaleBitmap可以直接改變實際數據的大小,這將獲得一些有用的功能
          6、DDB與DIB的轉換
          7、保存位圖到文件,保存為JPEG文件

          這個類沒有作過多的優化與功能擴充,如果要寫專業的圖象操作程序,本類可能不適用。

        class COperateBitmap
        {
        public:
        BOOL CopyWindowToClipboard(CWnd* pWnd);
        //剪貼板操作
        BOOL CopyDIBToClipboard(const CWnd* pWnd,HANDLE hDib,CPalette* pPal);
        BOOL CopyBitmapToClipboard(const CWnd* pWnd,CBitmap& bitmap,CPalette* pPal);
        //建立調色版,根據DIB
        BOOL CreateDIBPalette(HANDLE hDIB, CPalette* pPal);
        //DDB和DIB的轉換
        HANDLE DDBToDIB(HBITMAP hBmp, DWORD dwCompression, CPalette *pPal);
        HBITMAP DIBToDDB( HANDLE hDIB );
        HANDLE DDBToDIB( CBitmap& bitmap, DWORD dwCompression, CPalette* pPal );
        int SaveBmp(HANDLE hDib,LPSTR filename);
        //從文件裝載各種圖形格式(JPG、BMP、Gif等),并得到大小和位圖的句柄
        void LoadPictureFromFile(HDC hdc, LPCTSTR szFile, CBitmap* pBitmap, CSize& mSize);
        //把位圖畫到DC上
        void DrawBitmap(CDC* dc, HBITMAP hbmp, RECT r, BOOL Stretch);
        //建立區域
        BOOL CreateRegion (RECT r, CRgn *pRgn, CBitmap *pBitmap, COLORREF keycol);
        //兩個位圖對拷
        void CopyBitmap(CDC* dc, CBitmap& mRes, const CBitmap& hbmp, RECT r);
        //由位圖到區域
        HRGN BitmapToRegion (HBITMAP hBmp, COLORREF cTransparentColor = 0, COLORREF cTolerance = 0x101010);
        COperateBitmap();
        //縮放圖象主函數,由Ivaylo Byalko編寫
        HBITMAP ScaleBitmap(HBITMAP hBmp, WORD wNewWidth, WORD wNewHeight);
        //保存DIB為JPEG文件
        BOOL JpegFromDib(HANDLE hDib, //Handle to DIB
        int nQuality, //JPEG quality (0-100)
        CString strJpegFileName, //Pathname to target jpeg file
        CString* strMsg); //Error msg to return
        virtual ~COperateBitmap();
        protected:
        //下面三個縮放圖象輔助函數,由Ivaylo Byalko編寫
        BITMAPINFO *PrepareRGBBitmapInfo(WORD wWidth, WORD wHeight);
        void ShrinkData(BYTE *pInBuff, WORD wWidth, WORD wHeight,
        BYTE *pOutBuff, WORD wNewWidth, WORD wNewHeight);
        void EnlargeData(BYTE *pInBuff, WORD wWidth, WORD wHeight,
        BYTE *pOutBuff, WORD wNewWidth, WORD wNewHeight);
        WORD DIBNumColors(LPSTR lpbi);
        WORD PaletteSize(LPSTR lpbi);
        float *CreateCoeff(int nLen, int nNewLen, BOOL bShrink);
        //操作JPEG文件
        BOOL BuildSamps(HANDLE hDib,
        int nSampsPerRow,
        struct jpeg_compress_struct cinfo,
        JSAMPARRAY jsmpArray,
        CString* pcsMsg);
        RGBQUAD QuadFromWord(WORD b16);
        BOOL DibToSamps(HANDLE hDib,
        int nSampsPerRow,
        struct jpeg_compress_struct cinfo,
        JSAMPARRAY jsmpPixels,
        CString* pcsMsg);
        };

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 午夜老司机免费视频| 久久久久久久99精品免费| 成人免费午夜视频| 亚洲制服在线观看| 天天影院成人免费观看| 精品久久久久久亚洲精品| 欧美三级在线电影免费| 亚洲七久久之综合七久久| 成人免费视频小说| 国产成人人综合亚洲欧美丁香花| 日本免费一区尤物| 视频一区二区三区免费观看| 亚洲成人一区二区| 中文在线免费看视频| 亚洲AV成人一区二区三区AV| 99久久免费看国产精品| 亚洲av一本岛在线播放| 蜜臀91精品国产免费观看| 老司机午夜免费视频| 亚洲大尺度无码专区尤物| 鲁大师在线影院免费观看| 精品亚洲456在线播放| 亚洲AⅤ永久无码精品AA| 你好老叔电影观看免费| 久久丫精品国产亚洲av不卡| 大地资源在线观看免费高清| 免费一级毛片在线播放放视频| 久久亚洲国产精品五月天| 日本亚洲免费无线码| 视频一区在线免费观看| 亚洲国产精品久久久久久| 中文字幕无码免费久久99| 免费无码国产在线观国内自拍中文字幕 | 亚洲日韩欧洲无码av夜夜摸| 24小时免费看片| 精品国产亚洲第一区二区三区| 亚洲精品午夜无码电影网| av无码国产在线看免费网站 | 最近中文字幕无免费视频| 国产成人精品免费视频大全| 亚洲日本香蕉视频|