{
int i, j; int i0, j0; int f1, f2;
unsigned char pImg[512*512];
for(j=w2-1; j>=0; j--) {
j0 = j*w1/w2;
f1 = 1024*j*w1/w2-1024*j0; f2 = 1024-f1;
for(i=0; i
pImg[i*w2+j]=(unsigned
char)((pImgIn[i*w1+j0]*f2+pImgIn[i*w1+j0+1]*f1)>>10); }
}//宽度插值
for(i=h2-1; i>=0; i--) {
i0 = i*h1/h2;
f1 = 1024*i*h1/h2-1024*i0; f2 = 1024-f1;
for(j=0; j pImgOut[i*w2+j]=(unsigned char)((pImg[i0*w2+j]*f2+pImg[(i0+1)*w2+j]*f1)>>10); } }//高度插值 } 下面是把我们的图像插值成原来的88%,125% int step5(void) { int w, h, w2, h2, w3, h3; unsigned char *pImg, *pImg2, *pImg3; printf(\ pImg= read_bmp(\ if(pImg==NULL) return -1; w2=(int)(0.88*w); h2=(int)(0.88*h); w3=(int)(1.25*w); h3=(int)(1.25*h); pImg2=(unsigned char*)malloc(256*256); pImg3=(unsigned char*)malloc(w3*h3); scale_img(pImg, w, h, pImg2, w2, h2); write_bmp(\ scale_img(pImg, w, h, pImg3, w3, h3); write_bmp(\ free(pImg3); free(pImg2); return 1; } 这是插值后的效果图,源代码已经同步更新