プロが教えるわが家の防犯対策術!

iphoneカメラアプリ開発、合成写真の表示

つくりたい機能は、カメラで写真を取る際に、予め用意してあるデフォルト画像(ひこにゃん)を写真の上から重ねて撮影・保存できる機能です。つまり、自分で取った顔写真などにデフォルト画像を合成するアプリです。

現在、撮影画面ではデフォルト画像+写真が表示するのですが(添付画像)、撮影後に「使用」を選択すると、デフォルト画像が消えて、カメラで取った写真だけが残ってしまします。

保存できるのも写真のみで、デフォルト画像は保存できません。

ソースコードは、基本的な参考書に載ってるトイカメラなどを、下記の部分のみ変えて撮影画面にデフォルト画像を表示できるようにしてあります。

【本アプリ】
- (IBAction)doCamera:(id)sender
{
NSLog(@"カメラ");

if( [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]){
UIImageView *aimageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"test.png"]];
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
imagePicker.cameraOverlayView = aimageView;
[self presentModalViewController:imagePicker animated:YES];
[imagePicker setDelegate:self];
[imagePicker setAllowsEditing:YES];
[imagePicker.cameraOverlayView release];
}

}

よろしくお願いします。

A 回答 (3件)

下のリンクで勉強して、カメラアプリ作成の基礎をマスターしましょう。



カメラアプリの作り方
http://news.mynavi.jp/column/iphone/001/index.html

画像のピクセル処理まで説明があります。
ピクセル処理ができないと、画像の合成はできません。(できなくはないかもしれないが……)
けっこう難度の高い処理だと思いますよ。
    • good
    • 0
この回答へのお礼

基礎から勉強します。ありがとうございます。

お礼日時:2011/12/07 12:22

No.1の補足への回答です



実装の仕方は、参考になさっているトイカメラなどのソースコードで、トイカメラっぽい画像にするために画像の加工を行っているものと思います。その位置で合成処理を行えばいいでしょう。

簡単な流れを書くと、
・UIGraphicsBeginImageContext()やUIGraphicsBeginImageContextWithOptions()で画像作成用のコンテキストを作成する
・コンテキストにカメラで撮影した画像を描画する
・合成する画像を描画する(合成する画像は透明度を持ったPNG画像で用意しておく)
・コンテキストからUIGraphicsGetImageFromCurrentImageContext()でUIImageを生成する
・UIGraphicsEndImageContext()でコンテキストを破棄する
・先ほど生成したUIImageを保存しつつ画面に表示する
こんな感じでしょう。
    • good
    • 0
この回答へのお礼

ありがとうございます!

お礼日時:2011/12/07 12:26

iPhoneのカメラ機能で生成される写真画像は、iPhoneの画面を経由して取り込まれるわけではありません。

画面に表示されるのはプレビューに過ぎません。また、cameraOverlayViewは、Appleとしては独自のUIを実装するために提供しているものです。
従って、cameraOverlayViewを利用して画面上で重ねて表示させたとしても、撮影した時にその画像は合成してもらえませんよ。
撮影した画像と自前の画像の合成は、あくまでも自力(アプリ側)で実装しなくてはいけません。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

>撮影した画像と自前の画像の合成は、あくまでも自力(アプリ側)で実装しなくてはいけません。

そのようですね。実はその点をお伺いしたくて投稿させて頂きました。(わかりずらくてすみません)
よろしければ、どのように実装すればいいのか教えて頂けないでしょうか。どうぞよろしくお願いします。

お礼日時:2011/11/16 02:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!