// 画像処理10:画像の回転 void rotate( Image image) { int x, y, k; Image bufimage; //重複して処理しないようオリジナル画像のコピーを用意する。 bufimage = createImage(image->height, image->width); //画像のメモリ確保・初期化 for(y = 0; y < image->height; y++){ for(x = 0; x < image->width; x++){ for(k = 0; k < 3; k++) { bufimage->pdata[y][x][k] = image->pdata[y][x][k]; //入力画像をコピーする } } } //回転処理 for(y = 0; y < image->height ; y++){ for(x = 0; x < image->width; x++){ for(k = 0; k < 3; k++) { //参照先が画像の範囲内なら画素を代入する if(0 <= x && x < bufimage->height && 0 <= y && y < bufimage->width) image->pdata[y][x][k] = bufimage->pdata[x][y][k]; //XY方向を入れ替えてコピーする else image->pdata[y][x][k] = 0; //参照データがないので0とする } } } deleteImage(bufimage); //処理用画像のメモリを解放 }