2016-04-18 66 views
0

真的很希望你能幫助這個被竊聽我整天IOS目標C保持Orienation但旋轉圖像數據

是否有可能保持一個UIImage(說風景)的orienation但裏面旋轉圖像?

我用下面的代碼

[UIImagePNGRepresentation(image) writeToFile:pngPath atomically:YES]; 

,其中圖像是一個UIImage保存我的UIImage。

下圖顯示了根據設備的方向保存的內容。

底部4是什麼,我想實現

Orientation Image

基本上我試圖讓pictue是其在橫向模式下側,無論你打開裝置的方式

任何幫助表示讚賞

馬克

回答

0

試試這個

UIImage* landscapeImage = [UIImage imageWithCGImage:image.CGImage 
              scale:image.scale 
             orientation:UIImageOrientationLeft]; 
[UIImagePNGRepresentation(landscapeImage) writeToFile:pngPath atomically:YES]; 
+0

對不起它做什麼,我把它應用到原著圖像是景觀與圖像內上下顛倒,並將其與相同的圖像,我需要它來轉右凸輪迴90度,但保持風景 –

+0

上面的代碼只改變任何方向左轉。如果您正在討論旋轉圖像,請參閱鏈接http:// stackoverflow。com/questions/11667565/how-to-rotate-an-image-90-degrees-on-ios –

+0

謝謝我看到一個很長的約100個全部旋轉圖像到我想要的但所有旋轉方向爲好或壓扁的圖像適合 –

0

我只是保存圖像文件,然後在UI中更改imageView。只要圖像總是在縱向模式下首先你可以只用90度旋轉攝像畫面是這樣的:

self.imageView.transform = CGAffineTransformMakeRotation(M_PI_2); 

然後設置ImageView的模式看點適合

self.imageView.contentMode = UIViewContentModeScaleAspectFit; 

然而,這將如果圖像需要以其他方式旋轉或者已經定位在橫向上,則不起作用。

0

它有助於修復拍攝圖像的方向嗎?

https://stackoverflow.com/a/15039536

也許你能找到靈感爲你自己的問題,如果不。基本上創建正確的寬度/高度的上下文,轉換爲旋轉,繪製圖像,存儲爲新圖像。

CGContextRef ctx = CGBitmapContextCreate(NULL, image.size.width, image.size.height, 
    CGImageGetBitsPerComponent(image.CGImage), 0, 
    CGImageGetColorSpace(image.CGImage), 
    CGImageGetBitmapInfo(image.CGImage)); 
    CGContextConcatCTM(ctx, transform); 
CGContextDrawImage(ctx, CGRectMake(0,0,image.size.height,image.size.width), image.CGImage); 
//or 
CGContextDrawImage(ctx, CGRectMake(0,0,image.size.width,image.size.height), image.CGImage); 

CGImageRef cgimg = CGBitmapContextCreateImage(ctx); 
UIImage *img = [UIImage imageWithCGImage:cgimg]; 

同時閱讀關於來自相機和畫廊的不同結果的評論。

如果你只想顯示它旋轉,你可以像@ bryannorden建議的那樣轉換UIView。

+0

嵌入了你的圖像,現在我看到它了,你總是希望人像人物,不管它被拍攝到什麼方向。所以你需要在風景圖像之前(或之後)進行裁剪。你也可以做的是在我的例子中改變CGRectMake,只需從負座標開始,並使其在畫布外繪製。 – user6227617

+0

如果您使用ImageView,您將需要剪輯,請參閱此處:http://stackoverflow.com/questions/6638623/uiviewcontentmodescaleaspectfill-not-clipping – user6227617

0
NSBitmapImageRep *bit_map = [[NSBitmapImageRep alloc] 
          initWithBitmapDataPlanes:NULL 
          pixelsWide:img_size.width 
          pixelsHigh:img_size.height 
          bitsPerSample:8 
          samplesPerPixel:4 
          hasAlpha:YES 
          isPlanar:NO 
          colorSpaceName:NSDeviceRGBColorSpace 
          bitmapFormat:NSAlphaFirstBitmapFormat 
          bytesPerRow:0 
          bitsPerPixel:0]; 
NSAffineTransform *trans2=[NSAffineTransform transform]; 
[trans2 translateXBy:dirtyRect.size.width/2 yBy:dirtyRect.size.height/2]; 
[trans2 rotateByDegrees: angle]; 
[trans2 concat]; 

NSGraphicsContext *g=[NSGraphicsContext graphicsContextWithBitmapImageRep:bit_map]; 
[NSGraphicsContext saveGraphicsState]; 
[NSGraphicsContext setCurrentContext:g]; 
[img drawInRect:NSMakeRect(0, 0, img_size.width, img_size.height)]; 
[NSGraphicsContext restoreGraphicsState]; 


[bit_map drawInRect:NSMakeRect(-img_size.width/2, -img_size.height/2, img_size.width, img_size.height)]; 

看到它在行動:https://www.youtube.com/watch?v=DD_KYaq3SSg