我無法旋轉圖像90度,圖像是768 x 768像素。我在這裏展示的代碼能夠創建一個新的圖像,但我寫的函數根本不能操縱它。我的圖像類和驅動程序中的旋轉它的功能如下。我必須順時針和逆時針旋轉所有圖片90度;我認爲我的問題是試圖讓指針正確切換像素。使用類別旋轉圖像
class image {
public:
image(); //the image constructor (initializes everything)
image(string filename); //a image constructor that directly loads an image from disk
image(image &other); //copy constructor
~image(); //the image destructor (deletes the dynamically created pixel array)
pixel** getPixels(); //return the 2-dimensional pixels array
int getWidth(); //return the width of the image
int getHeight(); //return the height of the image
void createNewImage(int width, int height);
private:
pixel** pixels; // pixel data array for image
int width, height; // stores the image dimensions
void pixelsToCImage(CImage* myImage);
};
void RotateClockWise(image *imageIn)
{
image rotateImg;
image *ptr = (image*) &rotateImg;
*ptr = *imageIn;
int height = rotateImg.getHeight();
int width = rotateImg.getWidth();
pixel** rotatePix = rotateImg.getPixels();
for (int i = 0; i < height; i++)
{
for (int j = 0; j < width; j++)
{
rotatePix[i][j] = rotatePix[j][i];
*(ptr + j * height + (height - i - 1)) = *(ptr + i * width + j);
}
}
}
我試過了,它應該是正確的代碼。這樣做更有意義,但是我的程序突破了我老師寫的一個功能,我們不應該編輯它。我現在沒有太多可以做的。謝謝你讓這個更清晰。 – 2014-11-20 17:50:31
沒問題,幫助很有趣,其他人也幫助我^^ – stupidstudent 2014-11-20 17:52:27