ios 地图黑屏_iOS 拍照黑屏的修复

本文介绍了在iOS应用中遇到拍照后闪退和地图黑屏问题的解决方案。通过图片压缩技术减少内存消耗,有效防止拍照时的闪退。同时,文章提到使用第三方拍照功能可能更好地解决内存峰值问题。提供了示例代码和优化方法,并提供了GitHub上的demo下载链接以供参考。
摘要由CSDN通过智能技术生成

之前做过一款应用,hybrid(UIWebView + Native)混合应用,这款应用有拍照定位功能。但是最近发现拍照的时候会出现闪退问题。找了原因以后发现是占用内存太多了。

所以找个几个方法来减少内存的消耗。

先贴出代码:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{

// @autoreleasepool{ //1.

//omitted.

UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];

if (!image)

{

image = [info objectForKey:UIImagePickerControllerOriginalImage];

}

@autoreleasepool{//2.

NSData *imageData =

//3. 4.//

UIImageJPEGRepresentation(image,0.5);//第二个参数为压缩系数。

NSInteger imagesize = (imageData.length)/(1024.0);

NSData *imgData;

if (imagesize > 200 ) {//进行压缩

CGFloat bl = 200 / imagesize;

imgData = UIImageJPEGRepresentation(image, bl);

}

NSInteger imgsize = (imgData.length)/(1024.0);

image = [UIImage imageWithData:imgData];

}

/

//将图片进行编码,

NSString *stringImage = [self htmlForJPGImage:image];

//οnlοad='AutoResizeImage(250,250,this)' alt='200 X 300'

NSString * js = [NSString stringWithFormat:@"var p = document.createElement('p'); p.innerText = '';document.body.appendChild(p);var e = document.createElement('img'); var obj = document.body.appendChild(e);e.src=\"%@\";e.border='0';e.width='100';e.height='100'; e.οnlοad='AutoResizeImage(250,250,this)';e.alt='200 X 300';",stringImage];

[mywebView stringByEvaluatingJavaScriptFromString:js];

[picker dismissViewControllerAnimated:YES completion:nil];

// }

}

几种方法的内存消耗图

1.图一为:(在压缩图片的基础上)在代码中加了NSAutoreleasePool。当函数做完时,函数中的变量会释放掉(这个有没有也没神马关系,因为本来函数结束参数就会释放掉)

2.图二为:(在压缩图片的基础上)将图片转成NSData,在NSData使用就马上释放。然而好像也没神马关系。

(建议用这种方法)

3.图三为:将图片转成jpg并将压缩系数改成0.2,将图片压缩后,在看是否大于200,如果大于,继续压缩。然而这个方法就很好使。拍了十张图片都没有蹦。

4.图四为:将将图片转成jpg并将压缩系数改成0.5.其他和方法三一样。

通过图片压缩,可以将拍照发生闪退的问题解决得比较好,但是大家还是可以看到拍照的时候还是会有一个消耗的峰值.这主要是因为使用了苹果系统自带的拍照功能,同事使用第三方的拍照就很好地解决了消耗的峰值问题。(但是我感觉,这个程序上也没神马大问题,就没去继续搞优化了。)如果你有需要,可以联系我,再发峰值消耗的解决方案给你。

demo下载地址:https://github.com/ouzhenxuan/fixThephone

还是那句,如果对你学习又帮助的话,请在github给我点个star吧,求星啊。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值