今回は画像を送信してみた。
サンプル
画像が選ぶと...
こうなる。転送は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];
参考まで。