我试图将图像和文本字段组合成单个图像,同时仍保持文本初始定位。
我使用UIGraphicsBeginImageContext
创建位图上下文,使用UIGraphicsGetImageFromCurrentImageContext
绘制最终图像。
到目前为止,我在函数中包含以下内容:
let size = CGSize(width: self.takenImage.size.width, height: self.takenImage.size.height)
UIGraphicsBeginImageContextWithOptions(takenImage.size, false, takenImage.scale)
let areaSize = CGRect(x: 0, y: 0, width: self.takenImage.size.width, height: self.takenImage.size.height)
takenImage.draw(in: areaSize)
let imageViewSize = self.takenImage.size
let multiWidth = areaSize.width / imageViewSize.width
let multiHeight = areaSize.height / imageViewSize.height
print ("multiWidth = \(multiWidth)")
print ("multiHeight = \(multiHeight)")
let textSize = CGRect(x: textOverlay.frame.origin.x * multiWidth, y: textOverlay.frame.origin.y * multiHeight, width: textOverlay.frame.size.width * multiWidth, height: textOverlay.frame.size.height * multiHeight)
textOverlay.drawText(in: textSize)
let outputImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
self.finalImage = outputImage
takenImage
是我相机拍摄的图像(从不 null),textOverlay
是包含所需文字的UITextField
。
我首先使用原始宽度/高度创建位图并绘制takenImage
。
如果我将此画到我的finalImage
,一切正常。问题源于尝试添加文本并将其保持在相同位置。
我尝试使用CGRect
的x,y,w,h坐标创建第二个UITextField : textOverlay
,但在查看最终图像时,我得到了奇怪的结果。
可以看到图像here。
如何在合并图像中保留文本的位置?
答案 0 :(得分:0)
您需要重新计算区域大小以绘制文字。
let areaSize = CGRect(x: 0, y: 0, width: self.takenImage.size.width, height: self.takenImage.size.height)
takenImage.draw(in: areaSize)
let imageViewSize = self.imageView.size
let multiWidth = areaSize.width / imageViewSize.width
let multiHeight = areaSize.height / imageViewSize.height
let textSize = CGRect(x: textOverlay.frame.origin.x * multiWidth, y: textOverlay.frame.origin.y * multiHeight, width: textOverlay.frame.size.width * multiWidth, height: textOverlay.frame.size.height * multiHeight)
textOverlay.drawText(in: textSize)
在这里,我使用self.imageView
- imageView包含您的takenImage
。
希望它有所帮助。