Objective c 在iPad/iPhone上使用带覆盖层的摄像头

Objective c 在iPad/iPhone上使用带覆盖层的摄像头,objective-c,ios,image,Objective C,Ios,Image,我正在尝试将覆盖图像添加到拍摄的照片中。有人看过我如何做到这一点的例子吗?我想要一张透明PNG文件的图片,然后允许用户拍摄其中包含图像的图片。Iulius是正确的,这本质上是一个重复的问题。但是,排除一个问题——您希望用户在创作快照时能够看到覆盖图吗?(也就是说,如果你的应用程序让不同的帽子出现在人们的头上,你想在他们拍照时显示漂浮在太空中的帽子吗?)。如果您想了解更多信息,需要使用imagePickerController的cameraOverlayView属性,该属性允许您将自己的视图叠加到

我正在尝试将覆盖图像添加到拍摄的照片中。有人看过我如何做到这一点的例子吗?我想要一张透明PNG文件的图片,然后允许用户拍摄其中包含图像的图片。

Iulius是正确的,这本质上是一个重复的问题。但是,排除一个问题——您希望用户在创作快照时能够看到覆盖图吗?(也就是说,如果你的应用程序让不同的帽子出现在人们的头上,你想在他们拍照时显示漂浮在太空中的帽子吗?)。如果您想了解更多信息,需要使用imagePickerController的cameraOverlayView属性,该属性允许您将自己的视图叠加到相机上。关于这个话题已经有很多问题了,比如:

更新re:scaling——LilMoke,我想当你说图像偏移时,你会因为相机的纵横比(4:3)和iPhone屏幕(3:4)的差异而陷入麻烦。您可以定义一个常量,并使用它设置UIImagePickerController的cameraViewTransform属性。以下是一段代码片段,部分借用并简化自优秀的增强现实教程:


如果这些代码不能使您走上正轨,那么您可以在这里发布您遇到问题的项目中的所有相关代码。希望这只是我上面所说的设置cameraViewTransform的问题。

可能重复“是”,但没有给出解决方案。正如我在我的帖子中指出的,我还没有找到任何关于如何做到这一点的例子。谢谢你的尝试,我会看一下链接,但它看起来不太有希望。迪伦,是的,这就是我想做的,但我发现的每个例子都做了同样的事情,图像偏移。当我第一次这样做的时候,我注意到了这个问题,所以我开始寻找一个例子。。。每个人都面临着同样的问题,似乎没有人能解决这个问题。在我看来,这似乎是一个缩放问题,但我不确定。@LilMoke更改ImagePickerController的cameraViewTransform属性是否有助于如上所述?Dylan,我已经回到这个问题上,但还没有让它工作。基本上,我的代码是这样写的:我添加了转换,但它似乎没有帮助,可能是我在错误的时间做的。如果你仍然活跃在帖子中,我可以发布进行转换的方法,也许你会看到这个问题。谢谢你的帮助。
#define CAMERA_TRANSFORM  1.24299
// First create an overlay view for your superimposed image
overlay = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
overlay.backgroundColor=[UIColor clearColor];
overlay.opaque = NO;

UIImagePickerController *imagePicker;
imagePicker = [[[UIImagePickerController alloc] init] autorelease];
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
imagePicker.showsCameraControls = YES; // assuming you need these?
imagePicker.toolbarHidden = YES;
imagePicker.navigationBarHidden = YES;
imagePicker.wantsFullScreenLayout = YES;
imagePicker.cameraViewTransform = CGAffineTransformScale(imagePicker.cameraViewTransform, 
    CAMERA_TRANSFORM, CAMERA_TRANSFORM); // If I understood your problem, this should help
imagePicker.cameraOverlayView = overlay;