Изображение водяного знака в режиме реального времени на камеру в iphone - PullRequest
3 голосов
/ 16 января 2010

Особая благодарность заранее ...... Я начинающий в разработке программного обеспечения для iPhone.

Просто ищите, как программно добавить изображение водяного знака в режиме реального времени в камеру, используя какао. Не искать шаг за шагом (хотя это было бы здорово), но более или менее искать, где я должен начать искать, как научиться. Есть ли рамки, разработанные для этого? Хотелось бы что-то родное для target-C с использованием фреймворка XCode, потому что я хотел бы в конечном итоге попробовать это на iPhone. Любая помощь будет великолепна.

1 Ответ

4 голосов
/ 16 января 2010

ОБНОВЛЕНИЕ: вот мой другой ответ о том, как этот вид наложения можно поместить под анимации камеры: вид наложения камеры - только для предварительного просмотра?

Helo Rajendra!

Я создал простое оконное приложение для 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

Надеюсь, это послужит вам отправной точкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...