Captura de tela parcial e perda da qualidade da imagem
Estou imprimindo uma captura de tela parcial para o rolo da câmera, e-mail, sms, FB, Twitter, etc ... Tela parcial selecionada - 100 pixels de cima, 100 de baixo.
Eu usei o seguinte código:
let top: CGFloat = 100
let bottom: CGFloat = 100
let size = CGSize(width: view.frame.size.width, height: view.frame.size.height - top - bottom)
UIGraphicsBeginImageContext(size)
let context = UIGraphicsGetCurrentContext()!
CGContextTranslateCTM(context, 0, -top)
view.layer.renderInContext(context)
let snapshot = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
UIImageWriteToSavedPhotosAlbum(snapshot, nil, nil, nil)
A captura de tela resultante era de baixa qualidade.
Pesquisei por horas e descobri que várias pessoas têm um problema semelhante. Não consigo entender completamente as soluções dadas a eles para o meu problema.
Consegui encontrar um semi-conserto. Eu mudei:
UIGraphicsBeginImageContext(size)
para
UIGraphicsBeginImageContextWithOptions(imageView.bounds.size,true,2.0)
que essencialmente aumenta minha captura de tela por um fator de 2,0
Isso parece me dar uma captura de tela parcial mais nítida / de melhor qualidade, embora a imagem seja maior do que eu pretendia.
Existe outra solução que eu possa aplicar que possa ser mais apropriada?
Obrigado!