图片在不裁切的情况下上传到服务器,结果返回的图片被强制转了90度,很生气.
当使用相机拍照之后,或者是相册选择照片之后,如果没有开启照片的编辑,那么后台就有可能会把 照片进行旋转,这个不知道是为啥.所以在不开启裁切,后台给旋转的情况下,使用下面的方法进行处理.可以在上传之前处理,也可以在imagepicker的didfinish的代理方法中处理.
if (image.imageOrientation != UIImageOrientationUp)
{
UIGraphicsBeginImageContextWithOptions(image.size, NO, image.scale);
[image drawInRect:(CGRect){0,0,image.size}];
UIImage * normalizedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
image = normalizedImage;
}
为了尽可能的展示图片的原貌,
self.imageView.contentMode = UIViewContentModeScaleAspectFit;
在这里还有一种情况,就是代理方法的不同
1.这个方法获取选取的图片方法为:UIImage *image = info[UIImagePickerControllerOriginalImage];这个方法可能会出现图片旋转的问题.像是那种还没有从icould完全下载下来的图片,这个代理方法是不走的
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info;
2.这个方法虽然可能不会出现旋转的问题,但是这个方法选取的照片有限制,像是那种还没有从icould完全下载下来的图片,回调的image对象是为nil的.要是有操作,像是加入数组,就有可能崩溃.
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(nullable NSDictionary<NSString *,id> *)editingInfo NS_DEPRECATED_IOS(2_0, 3_0);