有了上述的变换矩阵后,首先计算出旋转后新图像的宽度和高度:
w1=w*abs(cos(a))+h*sin(a)
h1=w*sin(a)+h*abs(cos(a))
然后对新图像的每个像素,按行、列进行遍历,找到对应的原图像中的像素
for(int x2=0; x2<w1; x2++){
for(int y2=0;y2<h1;y2++){
x1=x2*cos(a)+y2*sin(a)-0.5*w1*cos(a)-0.5*h1*sin(a)+0.5*w;
y1=-x2*sin(a)+y2*cos(a)+0.5*w1*sin(a)-0.5*h1*cos(a)+0.5*h;
//如果(x1,y1)不在原图宽高所表示范围内,则(x2,y2)处的像素值设置为0或255
//如果(x1,y1)在原图宽高所表示范围内,使用最近邻插值或双线性插值,求出(x2,y2)处的像素值
}
}