> ていうのを使っていますが,Bitmapのサイズを色々読み込みたいのですが
> 関数をどのようにかえればいいのでしょうか?
標準Cによると,
void image_read (int xsize, int ysize, unsigned char image[ysize][xsize], const char * filename)
{
/* ... */
}
でできることになっています。
ただし,C99をサポートしていないコンパイラではこれはできないので,
void image_read (int xsize, int ysize, unsigned char ** image, const char * filename)
{
/* ... */
}
となります。
bufferも,
unsigned char ** buffer;
と宣言して,
int i;
buffer = malloc(ysize * sizeof(unsigned char *));
if (!buffer) abort(1); /* 異常終了処理 */
buffer[0] = malloc(xsize * ysize);
if (!buffer[0]) abort(1); /* 異常終了処理 */
for (i = 1; i < ysize; ++i) {
buffer[i] = buffer[i - 1] + xsize;
}
とやる必要があります。
#要解放処理。
さらに,呼び出し側も
unsigned char image[100][100];
のようなものは渡せず,先ほどと同じようなルーチンで記憶領域を確保してやる必要があります。
個人的には,読み込むときにメモリも確保する形,即ち
unsigned char ** image_read (int * xsize, int * ysize, const char * filename)
{
/* ... */
}
という形の方が使い勝手がよい気がします。
|