スレを勃てるまでもないC/C++の質問はここで 10
■ このスレッドは過去ログ倉庫に格納されています
0636デフォルトの名無しさん
2009/06/04(木) 18:36:328ビット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を一度に数千枚〜数万枚単位で処理するため
このループ部分をもっと高速化したいです。何か良いアイデアは無いでしょうか。
ちなみにこの部分以外に目立ったループ箇所は無いです。
■ このスレッドは過去ログ倉庫に格納されています