• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:意味がわかりません)

プログラムの意味がわからない

このQ&Aのポイント
  • このプログラムは、画像のピクセルデータを変換するためのものです。
  • 具体的には、画像のピクセルごとに色情報を取得し、それを一部変換して再度ピクセルに格納します。
  • また、特定の条件に基づいて、変換後のピクセルを別の変数に格納します。

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

  • ベストアンサー
  • don_cha
  • ベストアンサー率34% (139/407)
回答No.1

ご質問のソースのステップごとに説明します // ループ関数です。wとhは多分、横幅と縦幅のピクセル値が入ってくる for(int i=0; i < w*h ; i++) {   // 例外エラーを下のcatchでフックします   try   {     // 配列変数pixelsのi番目の値の16ビット目から23ビット目の値(レッド値)を取得し     // 値が0で無ければ、90%値を計算し、rに保管します。(16ビット目から23ビット目のみ)     int r = (int)(pixels[i]&0x00ff0000);     if (r!=0x00000000)     {       r = ((int)((pixels[i]&0x00ff0000)*90/100)&0x00ff0000);     }     // 上記のr同様で、8ビット目から15ビット目の値(グリーン値)をgに保管します     int g = (int)(pixels[i]&0x0000ff00);     if (g!=0x00000000)     {       g = ((int)((pixels[i]&0x0000ff00)*90/100)&0x0000ff00);     }     // 上記のr同様で、0ビット目から7ビット目の値(ブルー値)をgに保管します     int b = (int)(pixels[i]&0x000000ff);     if (b!=0x00000000)     {       b = ((int)((pixels[i]&0x000000ff)*90/100)&0x000000ff);     }     // 計算・保管したrgb値を次の条件で組み立てします。     if((((w+i)/w)%2)!=0)     {       // 偶数ラインのとき、配列epixelsのi番目に上記で計算したrgb値を組み立て保管し       // 配列uepixelsの番目に元々のピクセル値を保管       epixels[i] = 0xff000000| r | g | b ;       uepixels[i]=pixels[i];     }     else     {       // 奇数ラインのとき、配列epixelsのi番目に元々のピクセル値を保管し       // 配列uepixelsの番目に上記で計算したrgb値を組み立て保管       epixels[i] = pixels[i];       uepixels[i] = 0xff000000| r | g | b ;     }   }   // 例外発生時のフック   catch(Exception ex)   {     ;   } } っというようなことですね。 簡単に言うと、画像によこじまのスモーク(ダーク10%)をかける感じのものを2つ作るプログラムみたいですね。(実際に動かしてないので違うかも知れませんが(^^;)

mos21
質問者

お礼

お返事ありがとうございました。そうですね、画像の奇数ラインと偶数ラインにスモークをかける画像二つを交互に表示させて一つのオリジナル画像に近い形でWeb上にアップするプログラムです。これのスモークの色を変えたりしていろいろためしたいのですがどこをいじればよいのかがわからなく困ってました。参考になりました。もっと勉強します(^^; また何か質問するかもしれませんがそのときはお願いしますm(_ _)m

関連するQ&A