/*=============================================*/
/* カラー画像の減色 */
/*=============================================*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void main(void)
{
/*============================*/
/* 変数宣言部 */
/*============================*/
int i,j; //■ ループ用変数
unsigned char Pix[128][128*3]; //■ バイナリ画像データ格納用
char buff[128]; //■ ヘッダ抽出用
int x,y; //■ 画像ファイルのヘッダ操作用変数
FILE *fp; //■ ファイルポインタ
/*============================*/
/* 画像入力部 */
/*============================*/
fp=fopen("./image_data/7.ppm", "rb" ); //■ read binaryモードで画像ファイルを開く
fgets(buff,128,fp); //■ ファイルの識別符号を読み込み
fgets(buff,128,fp); //■ 画像サイズの読み込み
fgets(buff,128,fp); //■ 最大輝度値の読み込み
//■ 画像データの読み込み
for(j=0;j<128;j++)
fread(Pix[j],sizeof(unsigned char),128*3,fp);
fclose(fp);
/*============================*/
/* 減色 */
/*============================*/
for(j=0;j<128;j++){
for(i=0;i<128;i++){
if(Pix[j][3*i]<=63)
Pix[j][3*i]=32;
else{
if(Pix[j][3*i]<=127)
Pix[j][3*i]=92;
else{
if(Pix[j][3*i]<=191)
Pix[j][3*i]=160;
else
Pix[j][3*i]=224;
}
}
}
}
/*============================*/
/* カラー画像の書き込み */
/*============================*/
fp=fopen("./image_data/test.ppm", "wb" ); //■ write binaryモードで画像ファイルを開く
fprintf(fp,"P6\n"); //■ ファイルの識別符号を書き込む
fprintf(fp,"128 128\n"); //■ 画像サイズを書き込む
fprintf(fp,"255\n"); //■ 最大輝度値を書き込む
//■ 画像データの書き込み
for(j=0;j<128;j++)
fwrite(Pix[j],sizeof(unsigned char),128*3,fp);
fclose(fp);
} // end_of_main
[戻る][Top]