我目前正在做一个C程序,我需要旋转,翻转和放大bmp图像。我的三种方法都可以自己正常工作,但是当我尝试执行两种或更多时,它们将覆盖之前的操作。例如,如果我想旋转然后翻转图像,则只会在结果上显示翻转。
这是我翻转的一个例子:
int flip (PIXEL *original, PIXEL **new, int rows, int cols)
{
int row, col;
if ((rows <= 0) || (cols <= 0)) return -1;
*new = (PIXEL*)malloc(rows*cols*sizeof(PIXEL));
for (row=0; row < rows; row++)
for (col=0; col < cols; col++) {
PIXEL* o = original + row*cols + col;
PIXEL* n = (*new) + row*cols + (cols-1-col);
*n = *o;
}
return 0; }
然后在这样的主要作品中:
readFile(inputFile, &rw, &cl, &b);
if(scale != 0)
{
enlarge(b, rw, cl, scale, &nb, &rw, &cl);
}
if(degree != 0)
{
rotate(b, rw, cl, degree, &nb, &rw, &cl);
}
if(fflag == 1)
{
flip(b, &nb, rw, cl);
}
writeFile(outputFile,rw,cl,nb);