从 iphone 相机拍照时收到 iphone 中的内存警告问题

Posted

技术标签:

【中文标题】从 iphone 相机拍照时收到 iphone 中的内存警告问题【英文标题】:receiving memory warning issue in iphone when taking picture from iphone camera 【发布时间】:2013-06-13 10:37:12 【问题描述】:

我从 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);
    

解决了这个问题,试了两天没成功

【问题讨论】:

呈现UIImagePickerController时内存警告正常。 您只应该担心此内存警告会使您的应用程序崩溃。使用 UIImagePickerController 打开相机是内存扩展操作。 那有什么办法解决呢。 我不明白你这个词用 UIImagePickerController 打开相机是内存扩展操作 【参考方案1】:

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

 - (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;

让我知道它是否有效!!!

编码愉快!!!!

【讨论】:

以上是关于从 iphone 相机拍照时收到 iphone 中的内存警告问题的主要内容,如果未能解决你的问题,请参考以下文章

如何从网页访问 iPhone 的相机?

使用 ZBarSDK 时 iPhone 相机失去自动对焦

ios App检查iPhone抖动然后拍照

用苹果手机拍照,连这三个功能都不会,你的iPhone白买了

Iphone 相机,钛金属加速器

需要访问 iPhone 使用的默认相机快门声音