【问题标题】:Watermark image on real time on camera view in iphoneiphone相机视图上实时水印图像
【发布时间】:2010-01-24 04:18:06
【问题描述】:

提前特别感谢...... 我是 iphone 软件开发的初学者。

只是在寻找如何使用 cocoa 以编程方式将实时水印图像添​​加到相机视图中。不是一步一步地寻找(虽然那会很棒),而是或多或少地寻找我应该从哪里开始寻找学习方法。是否有为此开发的框架。想要使用 XCode 框架的 Objective-C 原生的东西,因为我想最终在 iPhone 上试一试。任何帮助都会很棒。

【问题讨论】:

  • 嘿拉金德拉!如果我的回答对您来说足够有用,请接受。如果没有在 cmets 中提出您的问题,我会看看是否可以提供帮助。

标签: iphone


【解决方案1】:

更新:这是我关于如何将此叠加视图放在相机动画下的另一个答案:camera overlay view - just for preview?

Helo Rajendra!

我创建了一个简单的基于 Window 的 iPhone OS 应用程序,为您提供一个非常简单的示例,说明应该如何以及如何使用相机拍摄照片、在相机模式下叠加视图、调整大小和合并图像。这个项目实际上只有 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

我希望这将成为您的起点。

【讨论】:

  • Ivan,我现在这是一篇旧帖子,但它很有帮助,但我确实有一个问题......覆盖图像似乎在最终合并图像中偏移。有什么办法可以纠正这个吗?我认为这与缩放和相机的纵横比有关,但我不确定。有什么想法吗?
  • 那么在你的情况下,我会简单地尝试对水印图像进行转换。如果您愿意,您可以使用足够的 sn-ps 代码发布您的问题,以便我开始一个新项目,将代码粘贴到其中并使用它。也许我能帮上忙。如果您决定发布问题,请务必向我发送带有链接的消息。
  • 我在这里发布了一个问题和代码:stackoverflow.com/questions/10226764/… 感谢您的帮助!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多