swift歴2,3ヶ月の初心者です。
現在、スタンプカメラアプリを作成しています。
下記、問題点に関して質問させていただきます。
問題点:カメラのプレビュー画面とCollectionViewからもってきたスタンプ画像を合成したい時、
スタンプ画像の大きさが小さくなった状態で合成されてしまう。
質問内容:カメラからのプレビュー画面と複数のスタンプ画像を合成した時、
スタンプの大きさが小さくならないように合成するには、どういった
コーディングをすべきでしょうか。
また、canvasView(CollectionViewからもってきたスタンプ画像を配置しているビュー)の
子ビュー(CollectionViewからもってきたスタンプ画像)の座標やサイズの情報は
どうのような手段で取得できますでしょうか。
補足:xcode,swift,AVFoundation,CollectionViewを使用
書籍サンプル:詳細!Swift2iPhoneアプリ開発入門ノートのサンプルコードを
少し参考にさせていただきました。
撮影ボタンを押した際のコードは、下記のとおりです。
非常に初心者で申し訳ありませんが、ご教示願います。
@IBAction func takePhoto(sender: AnyObject) {
let myAVConnection = myImageOutPut.connectionWithMediaType(AVMediaTypeVideo)
myImageOutPut.captureStillImageAsynchronouslyFromConnection(myAVConnection, completionHandler: {(imageDataBuffer, error) -> Void in
let myImageData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(imageDataBuffer)
let stillImage = UIImage(data: myImageData)
let flippedImage = self.flipHorizontal(stillImage!)
let imageWidth = (stillImage!.size.width)
let viewWidth = self.view.bounds.width
let scale = imageWidth / viewWidth
let stampW = self.stampImage.size.width * scale//(CollectionViewから持ってきた画像ではなく、カメラのプレビュー画面の上に配置した画像の情報です)
let stampH = self.stampImage.size.height * scale
let stampX = self.stampView.center.x * scale - stampW/2
let stampY = self.stampView.center.y * scale - stampH/2
let newcanvasW = self.canvasView.bounds.width * scale //(CollectionViewから持ってきた画像の情報です)
let newcanvasH = self.canvasView.bounds.height * scale
var capturedImage = flippedImage
UIGraphicsBeginImageContextWithOptions(CGSizeMake(newcanvasW, newcanvasH), self.canvasView.opaque, 0.0)
capturedImage.drawAtPoint(CGPointMake(0, 0))
self.stampImage.drawInRect(CGRectMake(stampX, stampY, stampW, stampH))
self.canvasView.layer.renderInContext(UIGraphicsGetCurrentContext()!)
capturedImage = UIGraphicsGetImageFromCurrentImageContext()
UIImageWriteToSavedPhotosAlbum(capturedImage, self, nil, nil)
UIGraphicsEndImageContext()
})
}
あなたの回答
tips
プレビュー