2017-04-19 1 views
0

사용자가 다른 이미지 위에 오버레이 할 수있는 iOS 앱을 만들고 있습니다. 사용자는 imageView라는 UIImageView에 저장 될 배경 이미지를 선택할 수 있습니다. 그런 다음 사용자는 해당 이미지 위에 오버레이 될 이미지를 결정할 수 있으며이 이미지는 imageTwo라는 UIImageView에 저장됩니다. 그런 다음 사용자가 imageTwo를 이동하고 크기를 조정할 수 있습니다. 그러나 나는 그 이미지 뷰를 하나의 이미지로 합쳐서 다운로드 할 수 있어야한다.서로 다른 크기의 두 UIImageViews 병합

저는 현재 이미지를 다운로드하려고 아래의 기능을 사용하고 있습니다 :

@IBAction func downloadImage(_ sender: Any) { 
let bottomImage:UIImage = imageView.image! 
let topImage:UIImage = imageTwo.image! 

let mySize = CGSize(width: (imageView.frame.size.width), height:(imageView.frame.size.height)) 

UIGraphicsBeginImageContextWithOptions(mySize, false, 1) 
bottomImage.draw(in: CGRect(x: 0,y:0,width: mySize.width,height: mySize.height)) 
topImage.draw(in: CGRect(x: imageTwo.frame.origin.x ,y: imageTwo.frame.origin.y , width: (imageTwo.frame.size.width),height:(imageTwo.frame.size.height)), blendMode:CGBlendMode.normal, alpha:1.0) 
let newImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()! 
UIImageWriteToSavedPhotosAlbum(newImage, nil,nil,nil) 
UIGraphicsEndImageContext() 
} 

그러나, 그것은 매우 잘 작동하지 않습니다. 내가 위에서 내 기능을 사용하여 이미지를 다운로드 할 때, 그러나 Image viewed from app

, 배경 이미지가 늘어 외모와 topImage/새가 올바른 위치에 있지 : 이 이미지가 내 응용 프로그램에 모습입니다 Downloaded image

누구나 쉽게이 작업을 수행 할 수있는 방법이나 위에서 코드를 변경해야하는 방법에 대한 제안 사항이 있습니까? 여기에있는 사람이 UIImageViews를 자신의 View에 넣으라고 제안했으나 꽤 까다로운 것으로 판명되었습니다 ...

답변

0

문제는 사용자가 다른보기와 다른 이미지보기를 합성한다는 것입니다. 실제로 귀하의 imageviews에 의해 표시됩니다. 이미지가 이미지 뷰에 표시되는 것과 일치하도록 필요한 변환을 적용하거나 게으르며 화면의 이미지를 캡처 할 수 있습니다. snapshotView(afterScreenUpdates:)

관련 문제