I'm using this function to draw image on another images i'm using for in loop to iterate over and over so please help me to solve this issue every time i render it takes 50+mb
each time
func image(byDrawingImage image: UIImage, inRect rect: CGRect) -> UIImage? {
return autoreleasepool { () -> UIImage? in
UIGraphicsBeginImageContext(size)
draw(in: CGRect(x: 0, y: 0, width: size.width, height: size.height))
image.draw(in: rect)
let result = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return result
}
}
this is methood i'm calling when i get the image from server and trying to add image on the top of another image
private func modifyImagse() {
var parentSignatureCount = 0
var childSignatureCount = 0
guard let form = form else { return }
guard form.pages.count > 0 else { return }
var pages = downloadedImages
for input in form.inputs ?? [] {
for fieldId in input.fieldIds {
for field in form.fields {
if fieldId == field.id {
if input.inputType == .signature && input.label == "Signature"{
parentSignatureCount = parentSignatureCount + 1
let page = form.pages[field.pageNumber]
let x = field.x / 100.0 * page.width
let y = field.y / 100.0 * page.height
let signIndicator = UIImage(named: "sign_here_no_number.png")
pages[field.pageNumber] = pages[field.pageNumber].image(byDrawingImage: signIndicator!,
inRect: CGRect(x: CGFloat(x), y: CGFloat(y), width: 500, height: 150)) ?? pages[field.pageNumber]
pages[field.pageNumber] =
pages[field.pageNumber]
.textToImage(drawText: "\(parentSignatureCount)", atPoint: CGPoint(x: x + 60, y: y + 10) , textFontHeight: 70)
pages[field.pageNumber] = pages[field.pageNumber]
}else if input.inputType == .signature && input.label == "Child Signature" {
childSignatureCount = childSignatureCount + 1
let page = form.pages[field.pageNumber]
let x = field.x / 100.0 * page.width
let y = field.y / 100.0 * page.height
let signIndicator = UIImage(named: "sign_here_child.png")
pages[field.pageNumber] = pages[field.pageNumber].image(byDrawingImage: signIndicator!,
inRect: CGRect(x: CGFloat(x), y: CGFloat(y), width: 500, height: 150)) ?? pages[field.pageNumber]
pages[field.pageNumber] =
pages[field.pageNumber]
.textToImage(drawText: "\(childSignatureCount)", atPoint: CGPoint(x: x + 60, y: y + 10) , textFontHeight: 70)
pages[field.pageNumber] = pages[field.pageNumber]
}
}
}
}
}
downloadedImages = pages
}