代码之家  ›  专栏  ›  技术社区  ›  Tirth

iPhone摄像头实时水印图像

  •  3
  • Tirth  · 技术社区  · 15 年前

    提前特别感谢…… 我是iPhone软件开发的Beginner。

    只是想知道如何通过编程的方式使用cocoa将实时水印图像添加到相机视图中。不是一步一步地寻找(虽然那很好),而是或多或少地寻找我应该从哪里开始学习。是否有为此而开发的框架?希望使用Xcode框架实现Objective-C的本地特性,因为我希望最终在iPhone上实现这一点。任何帮助都会很好。

    1 回复  |  直到 15 年前
        1
  •  4
  •   Community CDub    8 年前

    更新: 以下是关于如何将此覆盖视图置于相机动画下的其他答案: camera overlay view - just for preview?

    拉金德拉!

    我创建了一个简单的基于窗口的iPhoneOS应用程序,为您提供了一个非常简单的示例,说明如何使用相机拍摄照片、在相机模式下覆盖视图、调整大小和合并图像。这个项目实际上只有appdelegate头文件和实现文件,可以很容易地在xcode中复制。

    这是头文件:

    //
    //  CameraWatermarkAppDelegate.h
    //  CameraWatermark
    //
    //  Created by Ivan Karpan on 1/16/10.
    //  Copyright __MyCompanyName__ 2010. All rights reserved.
    //
    
    #import <UIKit/UIKit.h>
    
    
    @interface CameraWatermarkAppDelegate : NSObject < UIApplicationDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate > {
        UIImageView *imageView;
        UIViewController *viewController;
        UIWindow *window;
    }
    
    @property (nonatomic, retain) UIImageView *imageView;
    @property (nonatomic, retain) UIViewController *viewController;
    @property (nonatomic, retain) IBOutlet UIWindow *window;
    
    
    @end
    

    下面是实现文件:

    //
    //  CameraWatermarkAppDelegate.m
    //  CameraWatermark
    //
    //  Created by Ivan Karpan on 1/16/10.
    //  Copyright __MyCompanyName__ 2010. All rights reserved.
    //
    
    #import "CameraWatermarkAppDelegate.h"
    
    
    const float WATERMARK_ALPHA = 0.5;
    
    
    @implementation CameraWatermarkAppDelegate
    
    @synthesize imageView, viewController, window;
    
    
    - (void)applicationDidFinishLaunching:(UIApplication *)application {
        self.viewController = [[UIViewController new] autorelease];
        viewController.view.backgroundColor = [UIColor blackColor];
    
        // An image view to save to (and therefore display) the captured image
        self.imageView = [[UIImageView new] autorelease];
        imageView.frame = viewController.view.frame;
        [viewController.view addSubview:imageView];
    
        [window addSubview:viewController.view];
    
        UIImagePickerController *anImagePickerController = [UIImagePickerController new];
        anImagePickerController.delegate = self;
        anImagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
    
        {// This block of code is only needed in case you want your watermark to be displayed also during the shooting process
            UIImageView *anImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Watermark.png"]];
            anImageView.alpha = WATERMARK_ALPHA;
            anImageView.contentMode = UIViewContentModeTopLeft;
            anImageView.frame = viewController.view.frame;
            anImagePickerController.cameraOverlayView = anImageView;
            [anImageView release];
        }
    
        // From the very beginning we simply present the image picker controller
        [viewController presentModalViewController:anImagePickerController animated:NO];
        [anImagePickerController release];
    }
    
    
    - (void)dealloc {
        [imageView release];
        [viewController release];
        [window release];
        [super dealloc];
    }
    
    #pragma mark UIImagePickerControllerDelegate
    
    - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
        UIGraphicsBeginImageContext(CGSizeMake(320, 480));
        // This is where we resize captured image
        [(UIImage *)[info objectForKey:UIImagePickerControllerOriginalImage] drawInRect:CGRectMake(0, 0, 320, 480)];
        // And add the watermark on top of it
        [[UIImage imageNamed:@"Watermark.png"] drawAtPoint:CGPointMake(0, 0) blendMode:kCGBlendModeNormal alpha:WATERMARK_ALPHA];
        // Save the results directly to the image view property
        imageView.image = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
    
        // Dismiss the image picker controller and look at the results
        [picker dismissModalViewControllerAnimated:YES];
    }
    
    
    @end
    

    我希望这能作为你的起点。