iOS:相机和自定义图像编辑入门

3
我的应用程序将允许用户从照片中剪切物体。他们可以选择已经存在于iPhone照片库中的照片,或使用相机拍摄新照片。根据我的理解,UIImagePicker是实现从库中选择照片或拍摄新照片的最简单方法。但是,我也知道它只提供基本的图像编辑功能(缩放,裁剪)。我希望我的图像编辑可以创建贝塞尔曲线,一旦所有曲线连接在一起,就可以剪切出封闭区域,保存其不带周围背景的样子。
苹果官方文档关于UIImagePicker建议使用AV框架来提供自定义图像编辑而不是基本的缩放和裁剪。那么我的第一个问题是:
1. 我确实需要使用AV框架吗?
2. 它会与UIImagePicker一起使用吗(即,UIImagePicker用于选择照片或拍摄新照片,然后我的AV框架代码接管图像编辑)?
3. 有没有好的资源可以开始学习这个过程的代码?
我的最后一个问题是关于实际的贝塞尔曲线生成/操作。似乎Core Graphics Framework支持这一点,但也有UIBezierPath对象,它显然是对我否则要使用的Core Graphics工具的某种包装器。
那么我的最后一个问题是:我需要使用UIBezierPath对象吗,还是我之前描述的需要更细粒度的控制,而UIBezierPath无法提供,因此强制我直接使用Core Graphics框架?
谢谢!
2个回答

3
  1. AV Foundation允许您与相机通信,以各种方式对其进行配置,并从中接收实时视频。因此,它适用于拍摄新照片或电影,但不适用于从相机胶卷中选择或编辑它们。您可能希望使用AV Foundation来替换UIImagePicker提供的图像捕获职责。可能您需要使用allowsEditing设置为NO的UIImagePicker,以便能够提供自己完全独立的编辑界面。
  2. 不,这是一项不同类型的任务。
  3. 我不知道有关此类事情的任何教程,但文档非常好。我在回答中发布了从相机捕获实时视频的全部内容,如此类问题,不确定是否更有帮助地了解了一些AV Foundation类如何链接在一起?

为了编辑图像,您可能最终要做的是从UIImage开始,创建一个CoreGraphics位图上下文(可以在其中绘制),对其进行某种合成,然后将结果转换为图像并将其保存回相机胶卷。

UIBezierPath是Core Graphics的包装器,但可能会满足您的需求。addClip可以将定义的路径设置为当前上下文中的新剪切路径,或者如果需要超出UIKit对当前上下文的理解,则可以使用CGPath属性。


感谢您提供详细的答案。我可能要等到这个周末才有时间去查看您发布的资源,但我会确保在那时候做到。有一件事我希望您能澄清:我将使用UIImagePickerController从照片库中选择照片,但是我将使用AV框架拍摄新照片?由于图像编辑不是使用AV框架完成的,所以我不能只使用UIImagePickerController拍摄照片,并将allowsEditing设置为NO,然后将其创建的UIImage传输到我的图像编辑对象中吗? - maxedison
当然可以。我认为对于您的目的,AV Foundation提示可能是一个错误的引导,尽管如果您想实时显示编辑效果,那么这就是您想要的。 - Tommy
感谢澄清。我想明天我能够花费足够的时间来处理这个问题。 - maxedison
感谢您的回复。我在这个周末取得了很大的进展。 - maxedison

-2

找一下 iPhone Cookbook,也许 KickassTorrents 上还有。

C07 有你需要的一切,相机、覆盖层、加载、选择、编辑、拍照、保存文档、发送图像、图像滚动条、缩略图、遮罩等等...


1
好的,谢谢你的建议。我可能会购买而不是通过种子下载 :) - maxedison
刚买了一本电子书,似乎没有关于自定义图像编辑的内容。相反,它只讨论UIImagePickerController。最让我担心的是自定义图像编辑。 - maxedison
我没有下载PDF,只是阅读了代码,但这里有一个目录清单:<br/> 01-加载图像/<br/> 02-选择图像/<br/> 03-编辑图像/<br/> 04-拍摄图像/<br/> 05-劫持相机/<br/> 06-保存到文档/<br/> 07-通过电子邮件发送图片/<br/> 08-图像滚动/<br/> 09-多重滚动/<br/> 0Xa-直接相机/<br/> 0Xb-自定义叠加/<br/> 10-创建图像/<br/> 11-图像缩略图/<br/> 12-位图/<br/> 13-遮罩图像/<br/> - painter_landscapes
许可证是BSD...... Erica Sadun,http://ericasadun.com iPhone开发者手册,3.0版 BSD许可证,使用需谨慎。这很基础,但你应该能够从中组合出一些东西。 - painter_landscapes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接