UIImage 没有从相机中显示,只是从照片库中显示

Posted

技术标签:

【中文标题】UIImage 没有从相机中显示,只是从照片库中显示【英文标题】:UIImage doesn't show up from camera, just from photo library 【发布时间】:2011-02-24 21:22:06 【问题描述】:

我在我的 UIImagePickerController 委托中使用以下代码:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
    UIImage *image = (UIImage *)[info objectForKey:UIImagePickerControllerOriginalImage];
    [self.personPhotoButton setBackgroundImage:image forState:UIControlStateNormal];

    [self dismissModalViewControllerAnimated:YES];

如果图像来自用户的照片库,它可以完美地工作,但如果它来自相机,则按钮中不会显示任何图像。没有任何错误或崩溃,它只是不起作用(按钮背景保持不变)。当我在info 上使用NSLog 时,它显示UIImagePickerControllerOriginalImage 中有一个图像对象,但它只是没有显示出来。我试过调整它的大小,但这并没有改变任何东西。

有什么想法吗?

编辑:我可以通过将以下内容添加到上述方法来使其正常工作:

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

然后,我有这个方法:

- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo 
    [self.personPhotoButton setBackgroundImage:image forState:UIControlStateNormal];

那么,是否需要保存照片才能显示?我可以不显示 UIImage 除非它确实保存到相册中吗?理想情况下,我宁愿不必这样做,但似乎这就是我可能不得不走的路。我也会尝试将它保存到磁盘(而不是照片库),也许这样会起作用。

【问题讨论】:

【参考方案1】:

原来问题出在我打电话给dismissModalViewControllerAnimated: 的地方。如果我将它移到方法的顶部,一切都会按预期进行:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
    [self dismissModalViewControllerAnimated:YES];

    UIImage *image = (UIImage *)[info objectForKey:UIImagePickerControllerOriginalImage];
    [self.personPhotoButton setBackgroundImage:image forState:UIControlStateNormal];

【讨论】:

【参考方案2】:

也许您应该先保留您的图片,然后再将其添加为背景。

【讨论】:

以上是关于UIImage 没有从相机中显示,只是从照片库中显示的主要内容,如果未能解决你的问题,请参考以下文章

检测 iPhone 相机方向

在swift 5中从UIImage中删除白色背景

如何在 CollectionView 中显示从照片库或相机中选择的图像?画廊视图

UIImage 不保存到相机胶卷

使用原生 iOS 相机应用程序拍摄的照片总是 UIImage 方向向上

如何在 UIImageView 中显示 UIImage?