내 iOS 앱이 인터넷에서 일부 이미지를 다운로드하고 화면에 표시합니다 (iPhone 세로 레이아웃). 이 이미지 중 일부는 더 커 보이기보다 넓습니다.이 경우 이미지가 화면에 나타나면 화면이 부서져 보입니다 (iPhone의 너비에 맞게 축소 된 와이드 스크린 TV의 그림을 상상해보십시오). 내가하고 싶은 것은 이미지의 너비가 이미지의 높이보다 넓을 때마다 (가로 레이아웃 모드로) 시계 방향으로 90도 회전시켜 앱의 도큐멘트 폴더에 저장 한 다음 프리젠 테이션을하고 싶습니다. 이렇게하면 와이드 스크린 TV (예 :)의 그림이 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];
}
그런 다음 이미지를 App의 문서 폴더에 저장합니다. 그런 다음 문서 폴더에 저장된 이미지 파일을 읽고이 이미지를 여는 새 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];
당신은 구원의 코드를 추가 할 수 있습니까? 또한, 당신은 몇 가지가 너무 [여기] 컨텍스트를 사용하고, 일부는 당신처럼 doung하는 CGImageRef –
를 사용하여 무엇 [1] [1] : http://stackoverflow.com/questions/1315251/how -to-rotate-a-uiimage-90-degrees –
나는 이것과 비슷한 문제를 겪었는데, 여기에 관한 나의 포스트가있다. 어쩌면 해결책을 다시 확인하는 데 도움이 될까? http://stackoverflow.com/questions/10600613/ios-image-orientation-has-strange-behavior – Boeckm