- 締切済み
c言語の画像処理プログラム
画像処理を勉強している初心者です。これからいろいろな画像処理を勉強していく予定ですが、もっとも基本のc言語で画像を表示させる方法がわからないですが、プログラムのソースとやり方を詳しく教えていただけませんか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- redfox63
- ベストアンサー率71% (1325/1856)
お使いのパソコンの環境の情報を投稿したほうが適切なアドバイスが得られますよ WindowsなのかLinuxなどのUnix環境なのかそれともMacなのか C/C++コンパイラをお持ちなのか、これから準備するのか プログラミングスタイルはどうするのか WinAPIなのかフレームワーク(MFC/OWL/X)を使うのか 扱う画像の種類は何なのか といった情報です …
- usatan2
- ベストアンサー率37% (163/436)
私は、フリーのBCCコンパイラで、 http://www.geocities.jp/ccfjd821/pindex.html を参考に、 JPEG、BMP,PNGの画像ファイルを読み込めるimgctl.dllを http://www.vector.co.jp/soft/dl/win95/prog/se222453.html からダウンロードし、以下のプログラムを使っています。 これは、 case WM_CREATE:で、画像ファイルを読み込み、 case WM_PAINT:で、読み込んだ画像を表示し、 case WM_DESTROY:で、領域を開放している という必要最小限のプログラムです。 WinMAin()は、たとえば http://www.geocities.jp/ccfjd821/purogu/wpe-ji1.html を参考にしてコピペすれば動きますよ。 実は、この方法は、つい最近、ここで質問してたどり着いた最新情報です(笑)。 http://oshiete1.goo.ne.jp/qa4052901.html // imgctl.dll を使った描画プログラム 2008-6-5 #include<windows.h> #include "imgctl.h" LRESULT CALLBACK WndProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam){ HDC hdc; PAINTSTRUCT ps; HINSTANCE hInst; static HDC hMin; static HDIB hDIB1,hDIB2,hDIB3; static BITMAPINFOHEADER pbmih1,pbmih2,pbmih3; switch(uMsg){ case WM_CREATE: hMin=CreateCompatibleDC(NULL); hInst=(HINSTANCE)GetWindowLong(hWnd,GWL_HINSTANCE); hDIB1= ToDIB("a.jpg"); HeadDIB(hDIB1, &pbmih1); hDIB2= ToDIB("b.bmp"); HeadDIB(hDIB2, &pbmih2); hDIB3= ToDIB("c.png"); HeadDIB(hDIB3, &pbmih3); return 0; case WM_PAINT: hdc=BeginPaint(hWnd,&ps); DIBtoDC(hdc, 0,0, pbmih1.biWidth, pbmih1.biHeight, hDIB1, 0,0,SRCCOPY); DIBtoDC(hdc, 100,200, pbmih2.biWidth, pbmih2.biHeight, hDIB2, 0,0,SRCCOPY); DIBtoDC(hdc, 300,100, pbmih3.biWidth, pbmih3.biHeight, hDIB3, 0,0,SRCCOPY); ReleaseDC(hWnd,hdc); EndPaint(hWnd,&ps); return 0; case WM_DESTROY: DeleteDIB(hDIB1); DeleteDIB(hDIB2); DeleteDIB(hDIB3); PostQuitMessage(0); return 0; } return DefWindowProc(hWnd,uMsg,wParam,lParam); }
お礼
参考になりました。ありがとうございました。