Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIImagePickerController使用相机源时内存不足_Ios_Uiimage_Uiimagepickercontroller_Disk - Fatal编程技术网

Ios UIImagePickerController使用相机源时内存不足

Ios UIImagePickerController使用相机源时内存不足,ios,uiimage,uiimagepickercontroller,disk,Ios,Uiimage,Uiimagepickercontroller,Disk,使用UIImagePickerController并将映像保存到磁盘上时,我遇到了一个很大的性能问题。我不知道我做错了什么。这是我的密码: - (void)imagePickerController:(UIImagePickerController *)pick didFinishPickingMediaWithInfo:(NSDictionary *)info { UIImage *image = [info objectForKey:@"UIImagePickerControll

使用
UIImagePickerController
并将映像保存到磁盘上时,我遇到了一个很大的性能问题。我不知道我做错了什么。这是我的密码:

- (void)imagePickerController:(UIImagePickerController *)pick 

didFinishPickingMediaWithInfo:(NSDictionary *)info {
    UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
    NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(image)];
    iPixAppDelegate *delegate = (iPixAppDelegate *)[[UIApplication sharedApplication] delegate];
    [delegate addPicture:imageData];    
}
addPicture
方法创建一个新的picture对象,该对象通过以下方式初始化:

- (Picture*) initPicture:(NSData*)dat inFolder:(NSString*)pat {
    self.data = dat;
    NSDate *d = [NSDate date];
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy-mm-dd hh-mm-ss"];
    self.name = [[formatter stringFromDate:d] stringByAppendingString:@".png"]; //The name by default of a picture is the date it has been taken
    [formatter release];
    self.path = [pat stringByAppendingPathComponent:self.name];
    if(![self fileExistsAtPath:self.path]){
        [self.data writeToFile:self.path atomically:YES];
    }
    return self;
}
UIImagePickerController
速度非常快,但当我将图片保存到磁盘上时,程序会变得非常慢


知道我做错了什么吗?

你的问题可能是因为你拍摄了原始图像

相机的原始图像分辨率约为1200x1400,这是一个很大的内存空间,如果您试图用它制作图片,它会导致设备崩溃(内存不足)


我建议将图像的大小调整为更小(本机320x480)。

我也有类似的问题。我绕过它的方法是在一个单独的线程中处理来自选择器的图像。我的问题是,在尝试关闭选择器并处理图像时,处理我的应用程序/用户界面的主线程崩溃:

- (void)imagePickerController:(UIImagePickerController *)picker
    didFinishPickingImage:(UIImage *)image
              editingInfo:(NSDictionary *)editingInfo
{
    [[picker parentViewController] dismissModalViewControllerAnimated:YES];

    NSLog(@"picker did finish");
    [NSThread detachNewThreadSelector:@selector(useImage:) toTarget:self withObject:image];

}

我认为这不能解决我的问题。根据那篇文章,一旦图像被写入磁盘,它们就不会占用很多内存。无论如何,谢谢你的回答,我会尝试一下。这对我帮助很大。谢谢我认为当设备处于“即将满”状态时,就会出现此错误。