I love iPhone, Android, Cocos2d-x
[iPad] フォトライブラリで編集した画像を元にオリジナル画像を再編集
なんか分かりにくいタイトルになってしまった。何がしたいかというと、iPad で UIImagePickerController を使用してフォトライブラリから写真を読み込む際に allowsEditing = YES にしておくと写真を選択後に画像の位置とスケールを指定することができます。UIImagePickerControllerEditedImage でその編集後の UIImage を取り出せるのですが、このサイズが 320 x 320 (厳密にはちょっと違った)で帰ってきます。これでは iPad で表示するには小さすぎます。そこで、元画像を編集後のデータを元に再度トリミングすることにしました。
ポイントは UIImagePickerControllerCropRect で編集した画像の位置とサイズが NSValue で取得できるので getValue: メソッドで CGRect の値を取得します。あとはそのデータを元に画像をトリミングすれば OK です。
- (IBAction) tapPhoto:(id)sender { UIImagePickerController* picker = [[UIImagePickerController alloc] init]; picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; picker.delegate = self; picker.allowsEditing = YES; self.popOver = [[UIPopoverController alloc] initWithContentViewController:picker]; self.popOver.delegate = self; [self.popOver presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; [picker release]; } #pragma mark ImagePickerController Delegate - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { [self.popOver dismissPopoverAnimated:YES]; [self.popOver release]; // get crop rect CGRect rect; [[info objectForKey:UIImagePickerControllerCropRect] getValue:&rect]; // original image UIImage* oImage = [info objectForKey:UIImagePickerControllerOriginalImage]; CGImageRef imageRef = CGImageCreateWithImageInRect([imageToCrop CGImage], rect); // cropped image UIImage *cropped =[UIImage imageWithCGImage:imageRef]; CGImageRelease(imageRef); }
関連する投稿
One comment
コメントをどうぞ
Additional comments powered by BackType
2stagnant…
…