代码已经添加到Github,以便让您了解实际问题。
这是层次结构:
-- ViewController.View P [width: 375, height: 667]
---- UIImageView A [width: 375, height: 667] Name: imgBackground
[A is holding an image of size(1287,1662)]
---- UIImageView B [width: 100, height: 100] Name: imgForeground
[B is holding an image of size(2400,982)]
我正在尝试将A与B合并,但结果被拉伸了。
这是合并代码:
func mixImagesWith(frontImage:UIImage?, backgroundImage: UIImage?, atPoint point:CGPoint, ofSize signatureSize:CGSize) -> UIImage {
let size = self.imgBackground.frame.size
UIGraphicsBeginImageContextWithOptions(size, false, UIScreen.main.scale)
backgroundImage?.draw(in: CGRect.init(x: 0, y: 0, width: size.width, height: size.height))
frontImage?.draw(in: CGRect.init(x: point.x, y: point.y, width: signatureSize.width, height: signatureSize.height))
let newImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
return newImage
}
注意:
- .contentMode = .scaleAspectFit
- 代码可以工作但结果被拉伸了。
- 请看代码中的这一行,
let size = self.imgBackground.frame.size
- 我需要更改此行以解决问题。找到子视图相对于UIImage大小的原点
以下是用于理解问题的屏幕截图:
我应该怎么做才能正确使用合并函数?
UIImage B
的原点变化明显。我该怎么做才能获得相对于原始图像大小(即UIImage A
)的确切原点? - Hemang