Korean, Edit

C 言語による画像の表示と出力

上位カテゴリ : 【C言語】 C言語目次


a. Github



Q.データ表現とアプリケーションに関する次の質問に答えてください。

1. ペイント プログラムを使用してさまざまな色 (単一、4 ビット、8 ビット、24 ビット) の BMP ファイルを生成し、16 進コードで表します。


<中央> 描画 </center>
1 ビット

<中央> 描画 </center>
4 ビット

<中央> 描画 </center>
8 ビット

<中央> 描画 </center>
24 ビット

<中央> 描画 </center>

## **2.エクササイズ** ```python #include #include #define width 100 #define height 100 unsigned char h[54]; unsigned char R[width][height], G[width][height], B[width][height]; int main(int argc, char *argv[]) { int i, j; FILE *in = fopen("image.bmp", "rb"); FILE *out = fopen("trans.bmp", "wb"); // *in is a pointer to the memory address that holds image.bmp, which is a FILE variable. // rb stands for read binary, wb stands for write binary. if(in == NULL){ printf("File does not exist."); return 0; } for(i = 0; i < 54; i ++) h[i] = getc(in); for(i = 0; i < width; i ++) for(j = 0; j < height; j ++){ B[i][j] = getc(in); G[i][j] = getc(in); R[i][j] = getc(in); } for(i = 0; i < width; i ++) for(j = 0; j < height; j ++){ if(B[i][j] == 0 && G[i][j] == 0 && R[i][j] == 0){ B[i][j] = 255; G[i][j] = 255; R[i][j] = 255; } else{ B[i][j] = 0; G[i][j] = 0; R[i][j] = 0; } } for(i = 0; i < 54; i ++) fputc(h[i], out); for(i = 0; i < width; i ++) for(j = 0; j < height; j ++){ fputc(B[i][j], out); fputc(G[i][j], out); fputc(R[i][j], out); } fclose(in); fclose(out); return 0; } ```
<中央> 描画 </center>
<中央> 描画 </center>
<中央> 描画 </center>

## **3.画像テクノロジーを理解する** ⑴ ファイル形式 > ① BMP (ビットマップ) 画像は、すべての情報をビットの集合として保存します。 > ② PNG、GIF、TIFF、JPEG などの形式は非可逆圧縮技術を使用しているため、情報損失が発生します。 > ③ GIF はカラーパレットを 8 ビットに削減するため、大幅なデータ損失が発生します。 > ④ 非可逆圧縮技術は、画像内の色の周波数とパターンに応じて効率が異なります。 > ⑤ 画像の再読み込み時にはランレングス符号化を使用します。 ⑵ 画像ユニット > ① ピクセルとは画像の最小単位です。 > ② ビットマップでは、通常、ピクセル深度 (色深度) は 24 ビットです。 >> ○ True Color: 24 ビット、32 ビット >> ○ ハイカラー:16ビット >> ○ 256 カラー: 8 ビット >> ○ 24 ビットでは、R、G、B にそれぞれ 8 ビットが割り当てられます(8 ビットは 16 進数 2 桁を表します)。 >> ○ 例: 00 00 00 は黒を表し、FF 00 00 は赤を表します。 > ③解像度:画像のピクセル数。 ⑶ 画像の二値化 > ① ヘッダー: ファイル形式、ピクセル深度、解像度情報が含まれます。 (静的) > ② ボディ:(ダイナミック)

## **3.** **1**で作成した4種類のファイルのサイズを計算し、実際のサイズと比較します。 ⑴ヘッダ:30,054バイト(実績)-30,000バイト=54バイト ⑵ 本体:24ビット/ピクセル(ピクセル深度)×100×100ピクセル(解像度)=30,000バイト ⑶ 実際のディスク割り当てビット: 32,768 バイト (これは、より大きなスペースを確保し、情報の損失を防ぐためです。)
<中央> 描画 </center>

## **4.** 画像と音声の表現方法を比較して説明します。 | **画像** | **サウンド** | | --- | --- | |ピクセル |サンプル | |解像度 (1000 ~ 2000 万ピクセル) |サンプリングレート(44.1kHz、自然さ) | |色深度: 8、16、24、32 ビット |音の深さ: 16、32 ビット | | BMP // JPG、PNG | WAV // MP3、WMA、OGG | |映像も音もよく似ています。それらは、ビデオ (フレーム) などのように組み合わせることができます。 | | ---
*入力: 2013.07.11 21:52* *修正:2023.06.16 11:53*

results matching ""

    No results matching ""