2012-09-13 75 views
0

我的iOS應用程序從互聯網下載一些圖像並將它們顯示在屏幕上(iPhone縱向佈局)。其中一些圖像比高度更寬,在這種情況下,當圖像呈現在屏幕上時,它們會出現壓扁現象(想象寬屏電視的圖像縮小到iPhone的寬度)。我想要做的是,每當圖像的寬度比圖像的高度更寬時,我想將圖片順時針旋轉90度(進入橫向佈局模式),將其保存在應用程序的文檔文件夾中,然後呈現它在屏幕上 - 這樣,寬屏幕電視(例如)的圖像出現旋轉90度,但圖像寬高比不完全被破壞。iOS - 旋轉圖像或圖片

由於各種複雜的原因,我無法使用我的應用程序的橫向佈局 - 太多的其他副作用。所以這是我寫的代碼:

UIImage *image = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:imageURL]]]; 

    CGFloat width = image.size.width; 
    CGFloat height = image.size.height; 

    if(width > 1.2*height) { 
     NSLog(@"rotate the image"); 
     CGImageRef imageRef = [image CGImage]; 
     image = [UIImage imageWithCGImage:imageRef scale:1.0 orientation:UIImageOrientationLeft]; 
    } 

然後我將圖像保存到應用程序的文檔文件夾。然後打開一個新的UIViewController,它讀取保存在文檔文件夾中的圖像文件,然後打開這個圖像。問題是,圖像看起來沒有旋轉 - 只是出現與原始圖像相同的方式 - 沒有任何旋轉。我知道上面的代碼試圖做它應該做的事情,因爲我確實在控制檯中看到NSLog「旋轉圖像」。但不知怎的,這個圖像不會被保存爲旋轉的圖像。

那麼,我該如何處理這個問題呢?

編輯: 代碼來保存我的形象:

NSString *documentsDirectory = [NSHomeDirectory()  stringByAppendingPathComponent:@"Documents"]; 

    // Create image name 
    NSString *path = [@"" stringByAppendingFormat:@"%@%@", @"image", @".png"]; 

    // Create full image path 
    path = [documentsDirectory stringByAppendingPathComponent:path]; 

    path = [NSString stringWithFormat:@"%@", path]; 

    // Write image to image path 
    NSData *data1 = [NSData dataWithData:UIImagePNGRepresentation(image)]; 
    [data1 writeToFile:path atomically:YES]; 
+0

可以添加保存的代碼?此外,您使用CGImageRef –

+0

有些doung你一樣,一些正在使用的語境太[這裏]什麼是[1] [1]:http://stackoverflow.com/questions/1315251/how -to-rotate-a-uiimage-90-degrees – 2012-09-13 00:45:52

+0

我遇到了一個類似於此的問題,這裏是我的SO貼子,也許它會幫助你仔細檢查你的解決方案嗎? http://stackoverflow.com/questions/10600613/ios-image-orientation-has-strange-behavior – Boeckm

回答