Сохраняйте то же качество изображения после конвертации в Swift - PullRequest
0 голосов
/ 29 августа 2018

Я имею в виду ZImageCropper для моего проекта обрезки изображения. Тем не менее, это снижает качество изображения во время преобразования.

Я знаю, что одной из причин снижения качества изображения является UIGraphicsBeginImageContextWithOptions(imageView.bounds.size, false, 1)

Я пытался изменить его на UIGraphicsBeginImageContextWithOptions(imageView.bounds.size, false, 0) и UIGraphicsBeginImageContextWithOptions(imageView.bounds.size, false, UIScreen.main.scale)

Я ссылаюсь на свой код из Изменение размера и кадрирование 2 Изображения влияют на качество исходного изображения Это помогает, но когда я проверяю качество изображения, оно все равно уменьшается. Есть ли способ предотвратить снижение качества изображения?

1 Ответ

0 голосов
/ 29 августа 2018

в iOS 10 и выше вы можете изменить размер любого UIImage без потери качества, надеюсь, это поможет:

func resize(targetSize: CGSize) -> UIImage {
    if #available(iOS 10.0, *) {
        return UIGraphicsImageRenderer(size: targetSize).image { _ in
            self.draw(in: CGRect(origin: .zero, size: targetSize))
        }
    } else {
        return resizeImage(maxSize: targetSize.width)
    }
}


func resizeImage(maxSize: CGFloat) -> UIImage {
    var newWidth = size.width
    var newHeight = size.height

    if size.width >= maxSize {
        newWidth = min(maxSize, size.width)
        newHeight = maxSize * size.height / size.width
    } else if size.height >= maxSize {
        newHeight = min(maxSize, size.height)
        newWidth = maxSize * size.width / size.height
    }

    UIGraphicsBeginImageContext(CGSize(width: newWidth, height: newHeight))
    draw(in: CGRect(x: 0, y: 0, width: newWidth, height: newHeight))
    let newImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()

    return newImage!
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...