Apo*_*llo 4 objective-c uiimageview uiimage ios
我使用以下代码来扩展我的UIImagePickerController.
CGAffineTransform translate = CGAffineTransformMakeTranslation(0.0, 71.0); //This slots the preview exactly in the middle of the screen by moving it down 71 points
self.imagePicker.cameraViewTransform = translate;
CGAffineTransform scale = CGAffineTransformScale(translate, 1.333333, 1.333333);
self.imagePicker.cameraViewTransform = scale;
Run Code Online (Sandbox Code Playgroud)
然后我把照片呈现出来 UIImageView
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
[picker dismissViewControllerAnimated:NO completion:NULL];
_imageTaken = nil;
_imageTaken = [info objectForKey:UIImagePickerControllerEditedImage];
if(_imageTaken==nil)
{
_imageTaken = [info objectForKey:UIImagePickerControllerOriginalImage];
}
if(_imageTaken==nil)
{
_imageTaken = [info objectForKey:UIImagePickerControllerCropRect];
}
[_imageTakenView setContentMode:UIViewContentModeScaleAspectFill];
if (_selfie) {
UIImage * flippedImage = [UIImage imageWithCGImage:_imageTaken.CGImage scale:_imageTaken.scale orientation:UIImageOrientationLeftMirrored];
_imageTaken = flippedImage;
}
_imageTakenView.image = _imageTaken;
}
Run Code Online (Sandbox Code Playgroud)
到目前为止一切都很好.然后我将图像转换为我的数据库NSData
_imageData = [[NSData alloc] init];
_imageData = UIImageJPEGRepresentation(_image, .1);
Run Code Online (Sandbox Code Playgroud)
当我从服务器加载数据并将其呈现UIImageView为相同大小的另一个时,我设置了相同的宽高比:
[_imageViewToShow setContentMode:UIViewContentModeScaleAspectFill];
Run Code Online (Sandbox Code Playgroud)
但是图像看起来很紊乱(水平压扁).关于为什么会这样的任何想法?
将UIImage转换为NSData并保存
_imageData = UIImageJPEGRepresentation(_image, .1);
PFFile *imageFile = [PFFile fileWithName:@"image.png" data:_imageData];
newMessage[@"image"] = imageFile;
Run Code Online (Sandbox Code Playgroud)
问题:
当我重新下载数据时,UIImage会出现挤压.当我查看数据库中的图像时,似乎很好.不知道为什么会发生这种情况......
之前和之后的图像:


在上传之前尝试规范化图像的方向.这样即使元数据丢失,图像也能正常工作
这是一个类别:
UIImage+OrientationFix.h
@interface UIImage (OrientationFix)
- (UIImage*)imageByNormalizingOrientation;
@end
Run Code Online (Sandbox Code Playgroud)
UIImage+OrientationFix.m
@implementation UIImage (OrientationFix)
- (UIImage*)imageByNormalizingOrientation {
if (self.imageOrientation == UIImageOrientationUp)
return self;
CGSize size = self.size;
UIGraphicsBeginImageContextWithOptions(size, NO, self.scale);
[self drawInRect:(CGRect){{0, 0}, size}];
UIImage* normalizedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return normalizedImage;
}
@end
Run Code Online (Sandbox Code Playgroud)
你只需要打电话:
_imageTaken = [flippedImage normalizedImage];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
543 次 |
| 最近记录: |