今回は画像を送信してみた。
サンプル
画像が選ぶと...
こうなる。転送は2秒程度。
解説
まず送信部分。UIImagePickerController の扱いは割愛する。UIImage を送る部分だけピックアップした。
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { [picker dismissModalViewControllerAnimated:YES]; UIImage* image = [info objectForKey:UIImagePickerControllerEditedImage]; NSError* error = nil; NSData* data = UIImageJPEGRepresentation(image, 0.5); [self.session sendData:data toPeers:[NSArray arrayWithObject:self.peerID] withDataMode:GKSendDataReliable error:&error]; if (error) { NSLog(@"%@", error); } }特別な工夫はなく UIImage を NSData に変換して送信しているだけ。
次に受信部分。
- (void) receiveData:(NSData *)data fromPeer:(NSString *)peer inSession:(GKSession *)session context:(void *)context { // image NSLog(@"received image"); self.imageView.image = [UIImage imageWithData:data]; } }これも工夫は無い。送られてきた NSData から UIImageを生成して表示しているだけ。
なお大きなサイズだとエラーが出ていた。
Error Domain=com.apple.gamekit.GKSessionErrorDomain Code=30202 "Send data error." UserInfo=0x570c1b0 {NSLocalizedFailureReason=AGPSessionSendTo failed (801C0001)., NSLocalizedDescription=Send data error.}メモリが不足していたのでそれに関連してエラーが出たのかもしれない。
ソースコード
GitHub からどうぞ。
xcatsan/iOS-Sample-Code at 2010-12-10b - GitHub
匿名
2011年5月12日 12:47
画像ではなく動画の場合はどのようにNSDataに変換すればよいのでしょうか?
匿名
2011年5月12日 12:47
画像ではなく動画の場合はどのようにNSDataに変換すればよいのでしょうか?
xcatsan says:
2011年5月12日 21:57
こんばんは。
探してみると UIImagePickerController で動画を扱っている記事がいくつかありました。
UIImagePickerControllerで動画の選択
http://blog.suz-lab.com/2010/02/uiimagepickercontroller.html
Recorded video from iphone 3gs
http://sol3.typepad.com/tagalong_developer_journa/2009/07/recorded-video-from-iphone-3gs-.html
これらによると動画も画像と同じように NSData として取得できそうです。
(上記ページからの抜粋)
NSURL *videoURL = [info objectForKey:UIImagePickerControllerMediaURL];
NSData *webData = [NSData dataWithContentsOfURL:videoURL];
参考まで。
xcatsan says:
2011年5月12日 21:57
こんばんは。
探してみると UIImagePickerController で動画を扱っている記事がいくつかありました。
UIImagePickerControllerで動画の選択
http://blog.suz-lab.com/2010/02/uiimagepickercontroller.html
Recorded video from iphone 3gs
http://sol3.typepad.com/tagalong_developer_journa/2009/07/recorded-video-from-iphone-3gs-.html
これらによると動画も画像と同じように NSData として取得できそうです。
(上記ページからの抜粋)
NSURL *videoURL = [info objectForKey:UIImagePickerControllerMediaURL];
NSData *webData = [NSData dataWithContentsOfURL:videoURL];
参考まで。