• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:プログラミングでの画像の生成について・・・・・・・・)

プログラミングでの画像の生成について

このQ&Aのポイント
  • プログラミングで画像の生成を行う際に、明るさの調整や色の変換をするプログラムを作成する方法についての質問です。
  • 具体的には、画像の輝度値を使って明るさを調整したり、色相を変えたりする方法について知りたいと思っています。
  • また、プログラム内でのビットマップ画像の扱い方や、ファイルの読み込みと保存についても教えていただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

あくまでアドバイスです(過信しないでください)。 /* 画像fの明るさがm分の1になった画像h1(x,y)=(R(x,y)/m,G(x,y)/m,B(x,y)/m)を生成する。 */ static void DoH1(DllBmp* pBmpOrig, int m) { int r = 0; int g = 0; int b = 0; /*なるべく変更してはまずいものにはconstを付けます*/ const int nWidth = DllBmpGetWidth(pBmpOrig); const int nHeight= DllBmpGetHeight(pBmpOrig); /*0<m<10を実行(今回は中でする)*/ if(m < 0)m = 0; if(m >= 10)m = 10; /* 画像を生成する */ for(j = 0; j < nHeight; j++) for(k = 0; k < nWidth; k++) { /*色彩の輝度を取り出す*/ r = DllBmpGetPixelValueR(pBmpOrig, j, k); g = DllBmpGetPixelValueG(pBmpOrig, j, k); b = DllBmpGetPixelValueB(pBmpOrig, j, k);     /*輝度の設定*/ DllBmpSetPixelValueR(pBmpOrig, j, k, r / m); DllBmpSetPixelValueG(pBmpOrig, j, k, g / m); DllBmpSetPixelValueB(pBmpOrig, j, k, b / m); } } /* 画像fから法256の画像h2(x,y)=((n×R(x,y))mod(256),(n×G(x,y))mod(256),(n×B(x,y))mod(256))を生成する。 */ static void DoH2(DllBmp* pBmpOrig, int n) { int r = 0; int g = 0; int b = 0; /*なるべく変更してはまずいものにはconstを付けます*/ const int nMod = 256; const int nWidth = DllBmpGetWidth(pBmpOrig); const int nHeight= DllBmpGetHeight(pBmpOrig); /* 画像を生成する */ for(j = 0; j < nHeight; j++) for(k = 0; k < nWidth; k++) { /*色彩の輝度を取り出す*/ r = DllBmpGetPixelValueR(pBmpOrig, j, k); g = DllBmpGetPixelValueG(pBmpOrig, j, k); b = DllBmpGetPixelValueB(pBmpOrig, j, k);     /*輝度の設定*/ DllBmpSetPixelValueR(pBmpOrig, j, k, (n * r) % nMod); DllBmpSetPixelValueG(pBmpOrig, j, k, (n * g) % nMod); DllBmpSetPixelValueB(pBmpOrig, j, k, (n * b) % nMod); } } 長くなってきているので関数に置いています。そうした方が、改良や修正取り扱いが楽になります。 キーボードから受け取ったデータを渡して以下のどちらかを呼び出します。 /*キーボードから入力を受け付ける*/ m = get???(); /* 画像を生成する */ DoH1(pBmpOrig, m); または DoH2(pBmpOrig, m); を呼び出す

fantazical
質問者

お礼

ほんとうにありがとうございます。 すごく助かりました。

専門家に質問してみよう