我的 iOS 应用程序从 Internet 下载一些图像并将它们显示在屏幕上(iPhone 纵向布局)。其中一些图像比更高更宽,在这种情况下,当图像呈现在屏幕上时,它们看起来会被挤压(想象一下宽屏电视的图片缩小到 iPhone 的宽度)。我想要做的是每次图像的宽度比图像的高度宽时,我想将图片顺时针旋转90度(进入横向布局模式),将其保存在应用程序的文档文件夹中,然后呈现它在屏幕上 - 这样,宽屏电视(例如)的图片看起来旋转了 90 度,但图像纵横比并未完全破坏。
由于各种复杂的原因,我不能使用我的应用程序的横向布局 - 太多其他副作用。所以这是我写的代码:
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];