0

在我的应用程序中,我需要将 6 张图片上传到服务器。我捕获图像然后上传它,然后转到下一个并执行相同的操作。

当我到达第 5 张图像并收到 3 或 4 个内存警告后,应用程序崩溃

这是图像选择器的代码

-(void) TakePhotoWithCamera {
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
        picker1 = [[UIImagePickerController alloc] init];
        picker1.sourceType = UIImagePickerControllerSourceTypeCamera;
        picker1.allowsEditing = YES;
        picker1.delegate = self;
        [self presentViewController:picker1 animated:YES completion:nil];
    }
}

这是完成捕获时的方法

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    UIImage * img = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
    [picker dismissViewControllerAnimated:YES completion:nil];
    UIButton * tappedBtn = (UIButton *) [self.horizontalScrollView viewWithTag:chosenImgBtnTag];
    [tappedBtn setImage:img forState:UIControlStateNormal];
    [self useImage:img];   // this method upload the image to the server
    info = nil;
}

这是setImage的方法

 - (void) useImage:(UIImage *) image {

    currentImageToUpload = image;
   [self showLoadingIndicatorOnImages];
   [[CarAdsManager sharedInstance] uploadImage:image WithDelegate:self];
 }

所以请在这件事上有什么帮助吗?

4

1 回答 1

0

(480, 480)您应该在捕获图像后重新调整图像大小,如下所示,

UIImage *getNewImage;
CGSize newSize = CGSizeMake(480, 480);
UIGraphicsBeginImageContext(newSize);
[capturedImage drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
getNewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

它将“getNewImage”作为图像返回。你可以上传这张图片。它将减少您的内存警告崩溃。

于 2013-05-16T07:12:07.547 回答