【发布时间】:2017-08-02 12:12:34
【问题描述】:
我正在尝试将图像和文本字段组合成一个图像,同时仍保持文本的初始定位。
我使用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 是我的相机拍摄的图像(never null),textOverlay 是包含所需文本的 UITextField。
我首先创建位图并使用其原始宽度/高度绘制takenImage。
如果我把这个画到我的finalImage,一切正常。问题源于尝试添加文本并将其保持在同一位置。
我尝试使用来自UITextField : textOverlay 的 x、y、w、h 坐标创建第二个CGRect,但是在查看最终图像时,我得到了奇怪的结果。
图片可见here。
如何在合并图像中保留文本的位置?
【问题讨论】:
-
试试
UIGraphicsBeginImageContextWithOptions(takenImage.size, false, takenImage.scale) -
不会改变任何东西@LeoDabus