我想我通过运行一个将 Base SDK 设置为 iOS 6.1 的应用程序在最新的 iOS 7 中发现了一个错误(可能甚至更低的版本,还没有测试过)
我的照片库中有这张图片:http: //i.imgur.com/7KUIGLt.jpg
我通过以下方式呈现 UIImagePickerController:
UIImagePickerController *vc = [[UIImagePickerController alloc] init];
vc.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
vc.delegate = self;
vc.allowsEditing = YES;
[self presentViewController:vc animated:YES completion:nil];
我将选择的图像保存到我的桌面(我在模拟器上运行它,但这也适用于设备)
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
UIImage* outputImage = [info objectForKey:UIImagePickerControllerEditedImage];
if (outputImage == nil) {
outputImage = [info objectForKey:UIImagePickerControllerOriginalImage];
}
NSData *d = UIImagePNGRepresentation(outputImage);
[d writeToFile:@"/Users/Admin/Desktop/test.png" atomically:YES];
[self dismissViewControllerAnimated:YES completion:nil];
}
这是生成的图像:
注意右边的大黑条。这是什么原因造成的?
要重现这一点,您需要:
- IOS 7
- 将 Base SDK 设置为 6.1 的应用程序(也许甚至更低的 SDK,我还没有尝试过)
- iPhone 5/5c/5s
- 仅适用于使用 iPhone 5/5c/5s 相机拍摄的照片(您可以使用我上面链接的原始图像进行测试)
注意:为了清楚起见,黑条是实际图像的一部分。您在此处看到的图像不是 UIImageView 的屏幕截图,而是保存到磁盘并上传到此处的实际图像...