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!

questionAnswers(1)

yourAnswerToTheQuestion