今、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ファイルに出力できません.
アドバイスよろしくお願いします.
No.1ベストアンサー
- 回答日時:
うーむ。
流石にこれだけではちょっと判らないですね。取り敢えず
//画像データの出力
if(fwrite(buf,sizeof(unsigned short),size,fp)!=size)
↑は画像1ピクセルにつき16ビットと言う事でしょうか?
BMP情報ヘッダーの設定が16ビット用のビットフィールドに設定されていますか?
私はRAWの事は知らないのですが、RAWからBMPに変換する際、16ビット用のビットフィールドに対応したRGB5:6:5の配置をしないと正しく表示されないのでは?
BMPへの変換は24ビットもしくは32ビットにすると楽です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- その他(プログラミング・Web制作) 物理の斜方投射で目盛りに数値を入れたい 2 2023/05/27 06:32
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- その他(プログラミング・Web制作) Pythonによる物理の斜方投射の位置座標表示について 2 2023/06/05 12:46
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- その他(プログラミング・Web制作) Pythonにおける物理のシミュレーションでの単位変換について 2 2023/06/02 17:11
- JavaScript vertical sliderをautoplayしたい 2 2022/08/25 14:47
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
サウンド出力のデバイスを選択...
-
テキストファイルに改行コード...
-
VB.NETでExcelファイルを出力す...
-
二次元配列をクリップボードに...
-
AccessVBA複数レポート条件毎に...
-
CreateProcess関数と実行後の戻...
-
VC++でUTF-8のファイルを出力し...
-
Acccess レポートをグループ別...
-
カスタマバーコードの印刷
-
シェルコマンドの 2>&1 とはど...
-
ファイル形式またはファイル拡...
-
ファイル出力の場所を指定
-
setvbufってどう使うの?
-
gnuplotでreplotできない??
-
プリンタに出力する信号をパソ...
-
stdin,stdoutについて
-
C言語での印刷方法
-
C言語でBMP画像(ファイル)は...
-
UNIX & Linux の標準出力で得た...
-
コマンド(例えばls)の出力結果...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンド(例えばls)の出力結果...
-
Acccess レポートをグループ別...
-
VC++でUTF-8のファイルを出力し...
-
サウンド出力のデバイスを選択...
-
ファイルの文字コードをUTF-8に...
-
VBA でメモ帳へ保存する際の保...
-
ファイル出力の場所を指定
-
ファイル形式またはファイル拡...
-
テキストファイルに改行コード...
-
シェルコマンドの 2>&1 とはど...
-
Wordマクロで指定したフォルダ...
-
AccessVBA複数レポート条件毎に...
-
二次元配列をクリップボードに...
-
UNIX & Linux の標準出力で得た...
-
フォルダにあるPDF情報の抽出(VBA)
-
C++ BuilderでPDF出力
-
VBSでEXCEL⇒CSV変換で日付の書...
-
fortranのtxtファイル出力書式...
-
CBool関数について VB6とVB.net...
-
ワードからPDF変換でグラフが表...
おすすめ情報