从iphone相机拍照时,在iphone中接收内存警告问题

时间:2013-06-13 10:37:12

标签: iphone objective-c memory-management

当我从iphone相机拍摄时我遇到问题然后我在设备控制台上收到此错误“收到内存警告”。虽然我从iphone照片馆选择快照然后我没有得到任何内存警告问题。这是下面的代码

    -(IBAction)uploadImageBtn:(id)sender
    {

        UIButton *btn = (UIButton *)sender;
        @try
        {
            UIImagePickerController *pickImage = [[UIImagePickerController alloc]init];
            pickImage.delegate = (id)self;

            if (btn.tag == 2)
            {
                if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary ])
                {
                    pickImage.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
                    [self presentViewController:pickImage animated:YES completion:nil];
                }
                else
                {
                    UIAlertView *alertVw = [[UIAlertView alloc]initWithTitle:@"Message" message:@"Photo library not exist" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
                    [alertVw show];
                }
            }

            else if (btn.tag == 3)
            {
                if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera ])
                {
                    pickImage.sourceType = UIImagePickerControllerSourceTypeCamera;
                    [self presentViewController:pickImage animated:YES completion:nil];
                }
                else
                {
                    UIAlertView *alertVw = [[UIAlertView alloc]initWithTitle:@"Message" message:@"Camera not working " delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
                    [alertVw show];
                }
            }

        }

        @catch (NSException *exception)
        {
            NSLog(@"exception %@",exception);
        }


       }


// uiimage picker view controller delegate method 

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    @try {
        [picker dismissViewControllerAnimated:YES completion:nil];


        // Edited image works great (if you allowed editing)
        myImage = [info objectForKey:UIImagePickerControllerEditedImage];

        // AND the original image works great
        myImage = [info objectForKey:UIImagePickerControllerOriginalImage];

        myImage =  [myImage fixOrientation];

        // AND do whatever you want with it, (NSDictionary *)info is fine now
        //  fixOrObj = [[fixorientation alloc]init];
        //  myImage = [fixOrObj  fixOrientation];

        dataObj = UIImageJPEGRepresentation(myImage, 0);



        HUD = [MBProgressHUD showHUDAddedTo:self.view animated:YES];


        HUD.delegate = (id)self;
        HUD.labelText = @"Uploading image";
        [self performSelector:@selector(uploadimages) withObject:nil afterDelay:1.0];
    }
    @catch (NSException *exception)
    {
        NSLog(@"exception %@",exception);
    }
}

kinsly解决了这个问题,我试了两天但是没能成功

1 个答案:

答案 0 :(得分:0)

你可以做的是你可以减小照片的大小。因为你拍摄的照片分辨率高,尺寸大,所以首先缩小尺寸,如下所示。

 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
   CGSize sizeCropped = CGSizeMake(602, 450);//you can give any size
  UIImage *theimage = nil;
theimage = [yourclassname imageWithImage:image scaledToSize:sizeCropped];

  //you can do here whatever you want with theImage
      [imgPicker dismissViewControllerAnimated:YES completion:nil];

 }

+ (UIImage*)imageWithImage:(UIImage*)image
          scaledToSize:(CGSize)newSize;
{
UIGraphicsBeginImageContext( newSize );
[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

return newImage;
}

让我知道它的工作与否!!!

快乐编码!!!!