- 636 名前:デフォルトの名無しさん [2009/06/04(木) 18:36:32 ]
- スレの皆様に質問です。
8ビットbitmapファイルを読み込み、各ピクセルに演算を加え、別ファイルとして出力するプログラムを作っています。 演算結果をint型の変数ifooに格納し、unsigned char型にキャストしてputしています。 ifooがunsigned char型の範囲外の値の時は、範囲の端の値を代入しています。 //fin,foutのファイル上の位置は適切な場所にあるとする for (int y=0 ; y<height ; ++y){ for (int x=0 ; x<width ; ++x){ int ifoo = fin.get()*A+B; if(ifoo<0) ifoo=0; if(ifoo>255) ifoo=255; fout.put((unsigned char)ifoo); ++i; } //bmpファイルの幅は4の倍数ピクセルとする } 先輩が組んだプログラムはこれの2倍以上速いのですが、AとBがハードコードされていて ソースコードは失われ、先輩本人は行方知れずです。。。 そのためA,Bを引数で与えられるように、イチから再作成しています。 1000x1000pxのBMPを一度に数千枚〜数万枚単位で処理するため このループ部分をもっと高速化したいです。何か良いアイデアは無いでしょうか。 ちなみにこの部分以外に目立ったループ箇所は無いです。
|

|