日本国产亚洲-日本国产一区-日本国产一区二区三区-日本韩国欧美一区-日本韩国欧美在线-日本韩国欧美在线观看

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

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

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

更新時間: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);
};

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

本類教程下載

系統下載排行

主站蜘蛛池模板: 国产欧美在线观看一区二区 | 欧美大胆a视频 | 色综合色| 国产精品亚洲视频 | 国产系列欧美系列日韩系列在线 | 99pao强力打造免费高清色 | 国产精品高清一区二区三区不卡 | 澳门毛片 | 人人爽人人爽人人片c | 欧美大片国产在线永久播放 | 亚洲国产精品综合欧美 | 按摩一级片 | 日本免费高清在线观看播放 | 日韩一级欧美一级毛片在线 | 日本在线一卡二卡毛片 | 欧美日本亚洲专区 | jizz在线看片 | 手机看片高清日韩精品 | 国产精品永久免费10000 | 日本在线黄色 | 波少野结衣在线播放 | 中文字幕精品一区二区三区在线 | 国产美女精品久久久久久久免费 | 亚洲精品二区中文字幕 | 欧美精品在线免费 | 久久精品国产一区二区 | 日韩欧美国产偷亚洲清高 | 国产产一区二区三区久久毛片国语 | 国产免费一级高清淫日本片 | 亚洲狠狠操 | 精品视频在线视频 | 激情在线播放免费视频高清 | 日本夜夜操 | 日本黄大片在线观看 | 国产精品馆 | 日日噜噜噜噜人人爽亚洲精品 | 午夜免费小视频 | 色婷婷综合激情视频免费看 | 伊人久久影院 | 91秦先生在线 | 久久精品阿娇 |