と、言うわけで、演習問題(2-4)のテストプログラム。
やる気が削げてきたので、またまた手抜きプログラム。
エラーチェックとか何もしていないので、そのつもりで。
プログラムのパラメータは、第1引数が変換元のpnmファイル名で、第2引数が変換後のpnmファイル名。
一応手元の画像を変換してみたところ、ちゃんと動いているように見える。
やる気が削げてきたので、またまた手抜きプログラム。
#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ファイル名。
一応手元の画像を変換してみたところ、ちゃんと動いているように見える。
カテゴリ
Linuxトラックバック(0)
このブログ記事を参照しているブログ一覧: CELLプログラミングその4
このブログ記事に対するトラックバックURL: https://www.wizard-limit.net/cgi-bin/mt/mt-tb.cgi/1116
コメントする