質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

Q&A

0回答

2322閲覧

UIImagePickerControllerのカメラのプレビュー画面にUIImageViewをぴったり重ねたい

dd6

総合スコア15

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

0グッド

0クリップ

投稿2017/08/05 02:36

UIImagePickerControllerのカメラで写真を撮影し、次に撮影するときに、前回に撮影した写真を半透明にし、UIImagePickerControllerのカメラの上に重ねてガイドにしたいと思っています。UIImagePickerControllerのカメラのプレビューが横幅いっぱいだったので、前回の写真の横幅をそれに合わせ、同じ比率で縦を計算して、以下のようにしたのですが、うまくいきません。
また、iPhoneを縦に持ち撮影し、各値をprint()で出力してみると、写真の縦と横の値が逆になっているのですが、なぜかよくわかりません。UIImagePickerControllerのカメラのプレビュー画面の上にぴったり重ねる位置の取得する方法がわからないので、重ねる位置は何回か試して決めようかと思っています。
そのやり方では、どのiPhoneやiPadでもできないので、教えて欲しいことが

UIImagePickerControllerのカメラのプレビュー画面のサイズを取得し写真をリサイズする方法
UIImagePickerControllerのカメラのプレビュー画面の上にぴったり重ねる位置の取得の方法
写真の縦と横の値がなぜ逆になるのか、その場合の対処の方法

の3つですよろしくお願いします。

swift3 xcode8.3.3

//写真のサイズを取得(photoAssetはPHAssetデータ) let photoAssetWidth = Int(photoAsset.pixelWidth) let photoAssetHeight = Int(photoAsset.pixelHeight) // Windowの表示領域すべてのサイズ(point)の取得 let myBoundSize: CGSize = UIScreen.main.bounds.size let boundsWidth = Int(myBoundSize.width) let boundsHeight = Int(myBoundSize.height) //写真をリサイズする let resizeWidth = boundsWidth let resizeHeight = photoAssetHeight * boundsWidth / photoAssetWidth //PHAssetデータからUIImageに作る let manager = PHImageManager.default() let option = PHImageRequestOptions() var photoImage = UIImage() option.isSynchronous = true manager.requestImage(for: photoAsset, targetSize: CGSize(width: resizeWidth, height: resizeHeight), contentMode: .aspectFit, options: option, resultHandler: {(result, info)->Void in photoImage = result! }) // UIImageViewのサイズを設定する let iWidth: CGFloat = CGFloat(boundsWidth) let iHeight: CGFloat = CGFloat(boundsHeight) // UIImageViewのx,yを設定する let posX: CGFloat = (self.view.bounds.width - iWidth)/2 let posY: CGFloat = (self.view.bounds.height - iHeight)/2 // UIImageViewを作成する(var myImageView: UIImageView!で定義してある) myImageView = UIImageView(frame: CGRect(x: posX, y: posY, width: iWidth, height: iHeight)) // 画像をUIImageViewに設定する myImageView.image = photoImage //UIImageViewを半透明にする myImageView.alpha = 0.3 // カメラ起動 UIImagePickerControllerのインスタンスの作成 self.cameraPicker.sourceType = self.sourceType self.cameraPicker.delegate = self self.present(self.cameraPicker, animated: true, completion: nil) // UIImageViewをcameraPickerに重ねる. self.cameraPicker.cameraOverlayView = myImageViewコード

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問