2012年04月10日

横向けカメラ撮影で出来る余白の黒い帯について(その2)

横向けカメラ撮影で出来る帯について(その2)

前回の↓の取得方法では上下に黒い帯が出来るようでしたので。。
UIImage *editImage_ = [info objectForKey:UIImagePickerControllerEditedImage];

Screenshot 2012.04.10 09.08.32.png
Screenshot 2012.04.10 09.08.41.png


そこで、オリジナル画像情報と切取情報を使用して画像情報を取得しました。

/**
* 撮影及び画像が確定された時
* イメージピッカーから呼び出される処理
*/
- (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info {

// 8. 編集前の[オリジナル画像]をそのまま取得
UIImage* orgImage = [info objectForKey:UIImagePickerControllerOriginalImage];

// 9. 編集時の画像位置やサイズを取得
CGRect rect; // 編集情報を格納する
[[info objectForKey:UIImagePickerControllerCropRect] getValue:&rect];

// 10. オリジナル画像から編集情報にて切取画像を取得
CGImageRef imageRef = CGImageCreateWithImageInRect([orgImage CGImage], rect);

// 11. 一時描画画像をUIImageに変換
UIImage *cropped =[UIImage imageWithCGImage:imageRef];

// 12. 切り取った画像サイズ確認
NSLog(@"width=%f height= %f" ,cropped.size.width , cropped.size.height);

// 13. 一時描画画像を破棄
CGImageRelease(imageRef);

// 14.画像のアスペクト比そのままで入るように縮小
self.cameraImageView.contentMode = UIViewContentModeScaleAspectFit;

// 15.編集後のイメージを取り込み
self.cameraImageView.image = cropped;

// 16.カメラを閉じる
if ([picker respondsToSelector:@selector(presentingViewController)]) {
[[picker presentingViewController] dismissModalViewControllerAnimated:YES];
} else {
[[picker parentViewController] dismissModalViewControllerAnimated:YES];
}

}


Screenshot 2012.04.10 09.10.16.png
Screenshot 2012.04.10 09.10.21.png
黒い帯が消えました。

次はこの画像の余白背景を透明にして
正方形リサイズして保存する機能を作ってみたいと思います。
posted by itokami1123 at 21:29| Comment(0) | 日記

2012年04月09日

横向けカメラ撮影で出来る余白の黒い帯について(その1)

横向けカメラ撮影で出来る余白の黒い帯について(その1)

UIImagePickerControllerで
カメラの画像を取得して
撮影後編集すると...
横向けての撮影時に黒い帯がでるんですね。

/**
* カメラボタンを押されると呼ばれる処理
*/
- (void)cameraBtnDidPush:(UIButton*)btn
{
// 1.画像データ種類をカメラに設定
UIImagePickerControllerSourceType sType = UIImagePickerControllerSourceTypeCamera;

// 2.イメージピッカー(カメラ)画面を起動する
UIImagePickerController *ipc = [[UIImagePickerController alloc] init];

// 3.画像データの種類を指定(1.で設定した値)
[ipc setSourceType:sType];

// 4.イメージピッカー画面で発生したイベントは
// self(つまりこの処理を動かした呼び出し元)に通知する
[ipc setDelegate:self];

// 5.撮影後編集出来る様にする
ipc.allowsEditing = YES;

// 6.イメージピッカー画面を表に表示する
[self presentModalViewController:ipc animated:YES];

// 7.呼び出し元からの参照を破棄
[ipc release];

}



/**
* 撮影及び画像が確定された時
* イメージピッカーから呼び出される処理
*/
- (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info {

// 8.画像を正方形の箱の中に表示
CGFloat WIDTH= 200;// 表示する横幅
CGFloat HEIGHT = 200;// 表示する縦幅

UIImageView *cameraImageView =
[[[UIImageView alloc]
initWithFrame:CGRectMake(50, 120, WIDTH, HEIGHT)] autorelease];

[self.view addSubview:cameraImageView];

// 9.編集結果のデータをUIImageで受け取る
UIImage *editImage_ = [info objectForKey:UIImagePickerControllerEditedImage];

// 10.画像のアスペクト比そのままで入るように縮小される
cameraImageView.contentMode = UIViewContentModeScaleAspectFit;

// 11.編集後のイメージを取り込み
self.cameraImageView.image = editImage_;

// 12.カメラを閉じる
if ([picker respondsToSelector:@selector(presentingViewController)]) {
[[picker presentingViewController] dismissModalViewControllerAnimated:YES];

} else {
[[picker parentViewController] dismissModalViewControllerAnimated:YES];

}
}



kuroobi.png
次は、この黒い帯を透明にしてみようと思います。
posted by itokami1123 at 21:34| Comment(0) | 日記