0

我为他们使用相机的应用程序工作。所以我用自己的按钮实现了一个覆盖。但现在我有一个问题。我的问题是如何编辑他在特定区域(如旧 Photo Booth)制作照片的 UIImagePicker。

在这个应用程序中,您可以从 Person 制作照片,并且可以赋予它们新的外观。当我在特定区域拍摄照片时,结果就是我 iPhone 上的全屏照片。

任何人都可以帮助我吗?

谢谢!

更新:

我有这个代码:

- (IBAction)getPicture:(id)sender 
    {

    customCamera *cameraController = [[customCamera alloc] init];
    cameraController.sourceType =UIImagePickerControllerSourceTypeCamera;
    cameraController.delegate = self;

    cameraController.showsCameraControls = NO;
    cameraController.navigationBarHidden = YES;
    cameraController.toolbarHidden = YES;


    UIImageView *cameraOverlayView = [[UIImageView alloc] initWithImage:[UIImage   imageNamed:@"Ausschnitt2.png"]];

    cameraOverlayView.alpha = 1.0f;

    cameraController.cameraOverlayView = cameraOverlayView;

但这是为了覆盖。当我拍摄照片时,我会看到我的叠加层,但在记录照片时,我可以看到原始 iPhone 屏幕,而不是带有叠加层的照片。我的问题是,我怎样才能拍出像照相亭或屏幕上有其他物体的任何人的照片。

4

1 回答 1

0

为了修改图像,您需要

  • 访问图像的各个像素并根据需要对其进行处理,或者
  • 使用 CoreGraphics 渲染图像,然后在其上绘制叠加层或效果,或者
  • 使用 -renderInContext 获取您在屏幕上看到的内容并从中制作 UIImage(但这意味着您仅限于覆盖层的分辨率和下面的相机图像)。

我建议您阅读有关 Quartz 和 CoreGraphics 的内容,并查看一些 Apple 的女士们,例如RosyWriter,它们会拍摄图像并将图形放在顶部。

编辑:这是一个快速而肮脏的代码,展示了如何在图像顶部绘制圆角矩形,然后在该矩形内绘制一些文本。这是底层 UIImage 上的一个方法:

    UIGraphicsBeginImageContext(self.size);
[self drawInRect:CGRectMake(0, 0, self.size.width, self.size.height)];
[[UIColor colorWithWhite:0.0 alpha:.5] set];
UIBezierPath* path = [UIBezierPath bezierPathWithRoundedRect:roundedRect cornerRadius:10.0];
[path fill];
[textColor set];

[textString drawInRect:textRect
              withFont:font
         lineBreakMode:NSLineBreakByTruncatingTail
             alignment:NSTextAlignmentLeft];

UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();
于 2013-11-01T07:38:20.607 回答