![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
はじめましてこんばんは hommado と申します。
じつは先週の授業でこんな問題を出されたんですがもしできたらとあるプログラムを教えてほしいのです。
問題は
「キーボードから何階調にするのかを読み込むことで、入力画像LAX.bmpを任意の階調数に変換する」という
プログラムです。
一応下に素体のプログラムをおいたんで、其のプログラムに何か付け足す感じでお願いします。「/*******↓基本的には、この範囲に画像処理プログラムを書く****/」から
「 /********↑**************************************************/」の中にプログラムを書くかんじなのでもし分かったら教えてください。お願いします。
あと何か他の所に付け足すようなところがあったら教えてください
ここから元のプログラム
// Bitmapファイルを読み込んで,
// 別のファイルに出力するだけのプログラムです
#include<stdio.h>
#define XSIZE 256 /* 画像の横サイズ*/
#define YSIZE 256 /* 画像の縦サイズ*/
void main(void)
{
int x,y;
char fni[40],fno[40]; /* 入力ファイルと出力ファイルの名前を格納するための配列*/
unsigned char head[1078],buf[YSIZE][XSIZE]; /* 入力ファイル(ビットマップファイル)のヘッダ情報と輝度値情報を格納するための配列*/
unsigned char in_image[YSIZE][XSIZE]; /* 入力画像の画素の輝度値を格納するための配列*/
unsigned char out_image[YSIZE][XSIZE]; /* 出力画像の画素の輝度値を格納するための配列*/
FILE *fp,*fp2; /* ファイルポインタ*/
printf("ファイル名を入れてください:");
scanf("%s",fni);
fp=fopen(fni,"rb"); /* 読み込み& バイナリモードでオープンする*/
/* 配列head にビットマップファイルのヘッダ情報が格納されます*/
fread(head,sizeof(unsigned char),1078,fp); /* unsigned char 型のデータ×個を配列head に読み込む*/
/* 配列buf にビットマップファイルの輝度値情報が格納されます*/
fread(buf,sizeof(unsigned char),XSIZE*YSIZE,fp);
for(y=0;y<YSIZE;y++){
for(x=0;x<XSIZE;x++){
in_image[y][x]=buf[y][x]; /* 画像の左下の画素が座標buf[0][0] です*/
}
}
printf("読み込み終了しました!\n");
printf("出力ファイル名を入れてください:");
scanf("%s",fno);
/*******↓基本的には、この範囲に画像処理プログラムを書く****/
ここにプログラムを書いてください!
(もしここ以外で、他の所で付け足すプログラムがあったら何行目に
何を書くのかも教えてください)
/********↑**************************************************/
fp2=fopen(fno,"wb"); /* 書き込み& バイナリモードでオープンする*/
/* 配列head の内容を出力ファイルに書き込む*/
fwrite(head,sizeof(unsigned char),1078,fp2);
/* 配列out_image の内容を出力ファイルに書き込む*/
fwrite(out_image,sizeof(unsigned char),XSIZE*YSIZE,fp2);
fclose(fp); /* ファイルをクローズする*/
fclose(fp2); /* ファイルをクローズする*/
printf("作業完了!\n");
}
No.1ベストアンサー
- 回答日時:
ステキなくらい丸投げって感じですねぇ……
入力されるビットマップ(LAX.bmp)のフォーマットも書かれていませんし。
8Bitカラーなのか、16(15)Bitカラーなのか、24bitカラーなのか……
>unsigned char head[1078],buf[YSIZE][XSIZE]; /* 入力ファイル(ビットマップファイル)のヘッダ情報と輝度値情報を格納するための配列*/
ということなので、おそらく8Bitカラー…なのでしょう。
1078なんていうマジックナンバーが唐突として出てくる辺りが、出題者に対してどうなのよ?
と突っ込みたいところですが。
# とりあえずsizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+(sizeof(RGBQUAD) * 256)で1078になる…っぽい。
で……8Bitカラーということはカラーパレットがあるワケで、
>「キーボードから何階調にするのかを読み込むことで、入力画像LAX.bmpを任意の階調数に変換する」という
はカラーパレットを操作するコトで可能なんじゃないですかねぇ……
ヘッダを構造体ではなくunsigned char head[1078]で一纏めにして読み込んでいるので、カラーパレットいぢるのも手間と言えば手間ですが……。
カラーパレット内のRGB値から明度などを算出、モノクロ化(必要かは不明ですけど)して、階調数に変換…なんでしょう。
たぶん。
# 2階調に変換…だとモノクロビットマップ出力しろってことなんでしょうかねぇ……。
No.2
- 回答日時:
ビットマップについての知識はありますか??
あるという前提で、以下のサイトを参考にして自分なりにアレンジしてみてください。
参考URL : http://www.ruche-home.net/program/bmp/bitfield
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- C言語・C++・C# 至急お願いします。C言語で.imgのファイルを読み込んで1バイトづつ出力するプログラムを作りたいので 3 2023/01/16 22:49
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- C言語・C++・C# c言語の問題です 2 2023/07/21 10:51
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
RGBのバイナリデータをCImageに...
-
バイト型のデータを16進表記で...
-
Cで2次元配列にCSVファイルを...
-
ファイルのアクセス回数について
-
エクセルのプロパティーでセキ...
-
エクセルvbaでdocuworksprinter...
-
ExcelブックをGoogleスプレッド...
-
エクセルで複数のコメントのサ...
-
Windows10でコマンドプロンプト...
-
カンマ区切りのCSVファイルから...
-
Wordで差込印刷した後に別々の...
-
デスクトップの画像をhtmlに表...
-
FTPとファイルコピーの違いにつ...
-
【VB.NET】App.configにファイ...
-
多量のファイルをフォルダに自...
-
frxファイルの役目
-
Excel 相対パス
-
ファイル名から該当フォルダへ移動
-
バッチファイル 二つ上のディ...
-
VBA★PDFをPDFアプリで印刷し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DXFファイルをVBで取り込み、図...
-
バイト型のデータを16進表記で...
-
VBAでテキストファイルの改行を...
-
VBAでテキストファイルを複数開...
-
Cで2次元配列にCSVファイルを...
-
バイナリファイルでOutOfMemory...
-
テキストファイルを後ろから読...
-
[VBS] 16進数でバイナリファイ...
-
バイナリ読み込み時のデータ受...
-
ファイル入力のデータを構造体...
-
VBでLOOKUP機能
-
RGBのバイナリデータをCImageに...
-
VBScriptの配列は、要素数を指...
-
Excel VBAで画像解析
-
バイナリ出力
-
バイナリファイルの一部分をカ...
-
perl 特定の文字列をdatファイ...
-
awk getlineをもう一度ファイル...
-
CSVファイルによる検索の高速化
-
ファイル内の(&H0A)を(&H0D0A)...
おすすめ情報