• <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);
        };

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

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 久久精品视频免费看| eeuss影院ss奇兵免费com| 亚洲人成图片网站| 三年片在线观看免费观看大全中国| 成人片黄网站色大片免费观看cn | 亚洲综合久久1区2区3区 | 亚洲精品一卡2卡3卡三卡四卡| 久久亚洲免费视频| 亚洲视频在线观看一区| 亚洲国产成人精品无码区花野真一 | 1000部拍拍拍18勿入免费视频软件| 波多野结衣免费视频观看 | 亚洲Av无码国产一区二区| 性xxxxx大片免费视频| 亚洲高清最新av网站| 77777_亚洲午夜久久多人| 男女拍拍拍免费视频网站| 国产成人无码区免费A∨视频网站| 亚洲国产成人精品无码区在线网站| 一个人看的www免费在线视频| 毛片在线免费视频| 亚洲视频在线观看地址| 在线视频观看免费视频18| 91情国产l精品国产亚洲区| 国产精品怡红院永久免费| 亚洲成AV人片在线观看无| 精品免费久久久久国产一区 | 久久影视综合亚洲| 农村寡妇一级毛片免费看视频| 青青草国产免费久久久下载 | 久久久久亚洲精品日久生情| 成人黄页网站免费观看大全| 亚洲最大福利视频网站| 免费人成网站在线观看不卡| 在线播放亚洲精品| 免费毛片在线看片免费丝瓜视频| 羞羞视频免费网站入口| 国产成人aaa在线视频免费观看| 9久热这里只有精品免费| 亚洲乱码在线播放| 伊人久久亚洲综合|