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 没有从相机中显示,只是从照片库中显示的主要内容,如果未能解决你的问题,请参考以下文章
如何在 CollectionView 中显示从照片库或相机中选择的图像?画廊视图