我正在构建一个应用程序,您可以在其中制作图片或从相机胶卷中选择一个图像并将其保存在应用程序内以显示在tableview和detailview中。 问题是,当我从应用程序内部制作图片并保存它时,tableview和detailview变得非常慢,就像应用程序冻结一样。 我也得到这个错误“:CGAffineTransformInvert:奇异矩阵。” 当我从相机中加载未从我的应用程序内部拍摄的图片时,没有问题,应用程序运行非常流畅。

这是我打开相机和相机胶卷时的代码:

-(void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex{
if (buttonIndex == actionSheet.cancelButtonIndex) {
    return;
}

UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.allowsEditing = NO;

switch (buttonIndex) {
    case 0:
        if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
            picker.sourceType = UIImagePickerControllerSourceTypeCamera;
        }
        break;
    case 1:
        if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeSavedPhotosAlbum]) {
            picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
        }
        break;
}

[self presentModalViewController:picker animated:YES];  
}

这是我将它保存到相机胶卷并将图像放在imageView中的地方:

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
UIImage *mijnImage;
if (CFStringCompare((__bridge_retained CFStringRef)mediaType, kUTTypeImage, 0)==kCFCompareEqualTo) {
    mijnImage = (UIImage *) [info objectForKey:UIImagePickerControllerOriginalImage];
    mijnPlaatje_.image = mijnImage;
    UIImageWriteToSavedPhotosAlbum(mijnImage, nil, nil, nil);

}

 [picker dismissModalViewControllerAnimated:YES]; 

}

在这里,我将图像保存在我的应用程序中:

-(IBAction)save:(id)sender{
drankjes.plaatje = [mijnPlaatje_ image];
[self dismissModalViewControllerAnimated:YES];

}

我究竟做错了什么?

===============>>#1 票数:1

你需要使用:

UIImageWriteToSavedPhotosAlbum(image, self, @selector(video:didFinishSavingWithError:contextInfo), nil)

并实施:

- (void)image:(UIImage *) image didFinishSavingWithError: (NSError *) error contextInfo: (void *) contextInfo {
    NSLog(@"Saving image");
    if(error != nil) {
        NSLog(@"Error saving: %@",[error localizedDescription]);
    }
}

正如Jensen2K所说,即使没有错误,也会调用didFinishSavingWithError因此您可以使用它来判断保存何时完成。

===============>>#2 票数:0

尝试添加此委托方法以查看错误:

- (void)image:(UIImage *) image didFinishSavingWithError: (NSError *) error contextInfo: (void *) contextInfo {
    NSLog(@"Saving image");
    if(error != nil) {
        NSLog(@"Error saving: %@",[error localizedDescription]);
    }
}

===============>>#3 票数:0

要保存,请在您的应用程序中尝试使用didFinishLaunchingWithOptions方法:

NSString *path = [[NSBundle mainBundle]pathForResource:@"" ofType:@""];
UISaveVideoAtPathToSavedPhotosAlbum(path, self, @selector(video:didFinishSavingWithError:contextInfo), nil);

===============>>#4 票数:0

首先尝试保存从相机中某处点击的图像作为NSData,然后以NSData格式访问图像,将其转换为UIImage并显示在imageView上。

例如,您可以使用文档目录创建一个plist,您可以在该方法中将图像另存为NSData -

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

}

当您使用的方法保存图像时 - - (IBAction)保存:(id)发送者{}

您可以从Document目录中的plist访问相同的图像。将NSData转换为UIImage并将其显示在imageView上。我确定没有错误可以存活。

此错误“:CGAffineTransformInvert:奇异矩阵。” 由于图像的图像方向属性而发生。当保存图像时,NSData存储图像属性。并且您获得的图像没有错误。

===============>>#5 票数:0

你需要实现一些东西

-(IBAction) pickphoto
{
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary])
    {  
        UIImagePickerController *picker= [[UIImagePickerController alloc]init];
        picker.delegate = self;
        picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
        [yourView presentModalViewController:picker animated:YES];
        picker.videoQuality = UIImagePickerControllerQualityTypeHigh;
        picker.allowsEditing = NO;
        [picker release];
    }
}


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

  ask by Max Uylings translate from so

未解决问题?本站智能推荐:

2回复

iPhone自定义相机叠加(加图像处理):操作方法[复制]

可能重复: 如何创建自定义摄像头视图,而不是UIImagePickerViewController? App Store现在提供的许多图像共享应用程序都使用自定义相机,而不是Apple提供的标准相机选择器。 有谁知道创建自定义相机的任何教程或技巧?
2回复

自定义ios相机快门无法打开?

我已经在自定义相机中尝试过UIImagePickerController,当应用程序退出时或当我要调用safari时,相机快门没有打开,我使用了以下代码。
1回复

iOS-防止使用相机拍摄的照片进入iCloud

有没有一种方法可以防止使用UIImagePickerController拍摄并保存到“相机胶卷”中的任何照片转到iCloud。 任何状况之下。 这个问题也与我自己相关: iOS-如何知道是否启用了iCloud照片传输功能
2回复

使用UIImagePickerController保存图像

我正在尝试保存用户用相机拍摄的图像 1)如果我使用UIImageWriteToSavedPhotosAlbum我似乎无法分配我想要的fileName。 如何选择文件名? 使用此选项的好处是 [picker setSourceType:UIImagePickerControllerS
1回复

在ipad中选择使用UIPopoverController的图像时,UIImagePickerController iOS 5问题

我在ios 5的ipad中从UIImagePickerController选择图像时遇到问题。在ios 4中完美运行了相同的代码。 那是什么问题呢? 任何人都可以帮助我如何在iOS 5中使用UIImagePickerController吗? ios 4和ios 5的UIImagePic
1回复

UIImagePickerController overlayView和showsCameraControls问题

我正在尝试在UIImagePickerController上使用自定义叠加层,并且还能够移动和缩放生成的图像。 问题是当我设置showsCameraControls=YES ,叠加层将不会显示,但我可以使用移动和缩放功能。 但是,当showsCameraControls=NO ,会出现叠加层
3回复

UIImagePickerController故事:如何获取图像以在推文中插入?

我必须在推文中添加图片。 我尝试了这段代码,只有选择器显示出来。 当我点击图像时,它不会抓住...这是代码: 谢谢,对不起,我的英语...
1回复

在iOS中旋转的横向模式下捕获的图像

我正在用相机以纵向模式显示UIImagePickerController 。 我正在横向模式下捕获图像。 UIImagePickerController将捕获的图像自动旋转90度。 为什么这样做呢? 如何保留原始拍摄的图像?
1回复

UIImagePicker将图像保存到相机Roll Ipad

所以我正在拍摄一台相机(Ipad,5.0,ARC),允许我拍照...它会在拍完照片后给你一个预览。 预览中的两个选项是“使用”和“重拍”。 我不确定您在哪里尝试定义照片的名称并存储在相机胶卷中。 即使是通过NSLog,我也看不到任何名为w / use按钮的东西..这些教程对我来说似乎也没有
2回复

保存使用相机拍摄的图像或从相机胶卷中选择时的长时间延迟 - iPhone

我使用以下代码允许我的应用程序的用户拍摄/选择照片,然后将其保存到文档目录并设置为UIImageView的图像: 基本上我的问题是这个代码似乎执行得非常慢,例如当我从相机胶卷中选择一个图像时它最终会保存并将我带回调用视图,但只是经过很长时间的延迟。 任何人都可以对此有所了解吗?