アプリ版:「スタンプのみでお礼する」機能のリリースについて

今、raw形式のファイルを読み込んで、bmp形式への書き込みを
行うプログラムを作成しているのですがうまくいきません.

作成したプログラムの一部は以下のようになっています.

------------------rawファイルを読み込む関数の一部-------------
//1次元配列の確保
tmp=us_Calloc2(width,height);
//画像の読み込み
fread(tmp,sizeof(unsigned short),width*height,fp);
//2次元配列の確保
img->data=us_Calloc1(width,height);
//1次元配列から2次元配列にデータを移動する
for(i=0; i<height; i++){
for(j=0; j<width; j++){
img->data[i][j]=tmp[(width*i)+j];
}
}
------------------------------------------------------------
--------------bmpファイルに書きこむ(一部)--------------
//bufのメモリ領域の確保
buf=us_Calloc2(width,height);

for(i=0; i<height; i++){
for(j=0; j<width; j++){
buf[(width*i)+j]=img->data[i][j];
}
}
//BMPのファイルヘッダーの出力(省略)
//BMPの情報ヘッダーの出力(省略)
//画像データの出力
if(fwrite(buf,sizeof(unsigned short),size,fp)!=size){
printf("画像をBMPに書き込むことができませんでした.\n");
free(buf);
fclose(fp);
exit(-1);
}
}

このように書いたのですが、うまくBMPファイルに出力できません.

アドバイスよろしくお願いします.

A 回答 (1件)

うーむ。

流石にこれだけではちょっと判らないですね。
取り敢えず

//画像データの出力
if(fwrite(buf,sizeof(unsigned short),size,fp)!=size)

↑は画像1ピクセルにつき16ビットと言う事でしょうか?
BMP情報ヘッダーの設定が16ビット用のビットフィールドに設定されていますか?

私はRAWの事は知らないのですが、RAWからBMPに変換する際、16ビット用のビットフィールドに対応したRGB5:6:5の配置をしないと正しく表示されないのでは?

BMPへの変換は24ビットもしくは32ビットにすると楽です。
    • good
    • 0
この回答へのお礼

ありがとうございます.

お礼日時:2008/06/24 18:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!