/*=============================================*/
/*           カラー画像の入出力                */
/*=============================================*/
#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++){
      printf("(x,y)=(%d %d)のR値は%dです\n",j,i,Pix[j][3*i]);
    }
  }
  /*============================*/
  /*   カラー画像の書き込み     */
  /*============================*/
  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]