【发布时间】:2015-07-08 05:27:35
【问题描述】:
在iPhone 上导入大于 8 个megapixels 的图像时,我们的应用程序崩溃。有时内存使用率也很高。
顺便说一下,我们尝试导入的图像大于 8 兆像素,而且不是太大4000 x 3000(12 兆像素)。使用iPhone 相机拍摄的照片是3264 x 2448(8 兆像素)。
这是我们的记忆报告
导入 8 兆像素图像时
导入 12 兆像素图像时
内存使用的巨大差异。任何人都知道为什么内存使用量存在巨大差异以及对此的任何解决方案?
(我们将使用图像进行编辑、过滤、处理等)。
这是我们的代码
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
UIImage *selectedImage=[info objectForKey:UIImagePickerControllerOriginalImage];
//SCALING UIIMAGE
UIImage *scaledImage=[[UIImage alloc]init];
if ((selectedImage.size.width>3264) && (selectedImage.size.height>2448))
{
UIGraphicsBeginImageContextWithOptions(CGSizeMake(selectedImage.size.width/2, selectedImage.size.height/2), NO, 0.0);
NSLog(@" HEIGHT %f",selectedImage.size.height);
NSLog(@" WIDTH %f",selectedImage.size.width);
[selectedImage drawInRect:CGRectMake(0, 0,selectedImage.size.width/2 ,selectedImage.size.height/2 )];
scaledImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSLog(@" HEIGHT %f",scaledImage.size.height);
NSLog(@" WIDTH %f",scaledImage.size.width);
VisualEffectImageVIew.image=scaledImage;
BackgroundImageView.image=scaledImage;
ForegroundImageView.image=scaledImage;
}
else
{
VisualEffectImageVIew.image=selectedImage;
BackgroundImageView.image=selectedImage;
ForegroundImageView.image=selectedImage;
}
if(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPhone)
{
[picker dismissViewControllerAnimated:YES completion:nil];
}
else
{
[popoverController dismissPopoverAnimated:YES];
[self popoverControllerDidDismissPopover:popoverController];
}
}
【问题讨论】:
标签: ios xcode memory-management uiimageview ios8.1