と、言うわけで、演習問題(2-4)のテストプログラム。
やる気が削げてきたので、またまた手抜きプログラム。
#include <stdio.h>

int main(int argc, char *argv[]) {
  char buf[256];
  FILE *fin, *fout;
  int height, width, num, i;
  unsigned char *src, *dst;

  fin = fopen(argv[1], "r");
  fout = fopen(argv[2], "w");
  // P6
  fgets(buf, 256, fin);
  fprintf(fout, "%s", buf);
  // height width
  fgets(buf, 256, fin);
  fprintf(fout, "%s", buf);
  sscanf(buf, "%d%d", &height, &width);
  num = height * width;
  // depth
  fgets(buf, 256, fin);
  fprintf(fout, "%s", buf);


  printf("height = %d, width = %d, num = %d, num * 4 = %d\n", height, width, num, num * 4);
  src = (unsigned char *) malloc(((size_t)num) * 4);
  dst = (unsigned char *) malloc(((size_t)num) * 4);

  printf("src = %x, dst = %x\n", src, dst);

  for (i = 0; i < num; i++) {
    fread(src + i * 4, 1, 3, fin);
  }
  fclose(fin);

  rgb2y(src, dst, num);
  for (i = 0; i < num; i++) {
    fwrite(dst + ((size_t)i) * 4, 1, 3, fout);
  }
  fclose(fout);
}
使い方は、まず変換元のファイルをjpegtopnm等でpnmファイルに変換して、上のプログラムに食わせ、出来上がったファイルをpnmtojpeg等に食わせる。
エラーチェックとか何もしていないので、そのつもりで。
プログラムのパラメータは、第1引数が変換元のpnmファイル名で、第2引数が変換後のpnmファイル名。
一応手元の画像を変換してみたところ、ちゃんと動いているように見える。

カテゴリ

トラックバック(0)

このブログ記事を参照しているブログ一覧: CELLプログラミングその4

このブログ記事に対するトラックバックURL: https://www.wizard-limit.net/cgi-bin/mt/mt-tb.cgi/1116

コメントする

このブログ記事について

このページは、falseが2007年1月 2日 23:36に書いたブログ記事です。

ひとつ前のブログ記事は「CELLプログラミングその3」です。

次のブログ記事は「VMWareが面白い その2(VMWare tools のインストール)」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

広告

Powered by Movable Type 6.1.1