2010-01-16 4 views
3

미리 감사드립니다 ... 저는 아이폰 소프트웨어 개발에서 beggininer입니다.아이폰의 카메라보기에서 실시간으로 워터 마크 이미지

코코아를 사용하여 카메라보기에 실시간으로 프로그래밍 방식으로 워터 마크 이미지를 추가하는 방법을 찾고 있습니다. 단계별로 단계별로 (비록 멋지 겠지만) 찾고 있지는 않지만, 어느 정도 방법을 배우기 시작해야 할 곳을 찾고 있습니다. 이를 위해 개발 된 프레임 워크가 있습니까? Xcode 프레임 워크를 사용하여 객관적인 C 언어를 원합니다. 아이폰에서이 기능을 사용하고 싶습니다. 어떤 도움이라도 좋을 것입니다.

+1

안녕하세요 Rajendra! 내 대답이 당신에게 충분히 유용하다면 받아들이십시오. 코멘트에서 질문하지 않으면 내가 도울 수 있는지 알게 될 것입니다. –

답변

4

UPDATE : 여기 오버레이 뷰 카메라 애니메이션에서 넣을 수있는 방법에 대한 내 다른 대답 : camera overlay view - just for preview?

힐로 라젠 드라가!

간단한 Windows 기반 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 

.

+0

Ivan, 이제는 오래된 게시물이지만 매우 도움이되었지만 한 가지 문제가 있습니다 ... 오버레이 이미지가 최종 병합 이미지에서 오프셋 된 것처럼 보입니다. 이 문제를 해결하는 방법은 무엇입니까? 스케일링과 카메라의 가로 세로 비율과 관련이 있다고 생각합니다. 그러나 확실하지 않습니다. 어떤 아이디어? – LilMoke

+0

당신의 상황에서 나는 단순히 워터 마크 이미지에서 변형을 시도했다. 원하는 경우 코드 조각으로 질문을 게시하여 새 프로젝트를 시작하고 코드를 붙여넣고 함께 놀 수 있습니다. 어쩌면 내가 도울 수있을거야. 질문을 게시하기로 결정한 경우 링크가있는 메시지를 보내주십시오. –

+0

여기에 질문과 코드를 게시했습니다 : http://stackoverflow.com/questions/10226764/watermark-image-on-camera-view-is-offset 도움을 주셔서 감사합니다 !! – LilMoke