Ориентация изображения результата iOS UIImagePickerController после загрузки

Microsoft сделала работу над автоматической генерацией модульных тестов, на основе контрактов кода и параметризовала модульный тест. Например, в контракте говорится, что количество должно быть увеличено тем, когда объект добавляется к набору, и параметризованный модульный тест говорит, как добавить объекты “n” к набору. Pex тогда попытается создать модульный тест, который доказывает, что условия контракта нарушены. Посмотрите этот видео для обзора.

, Если это работает, Ваш модульный тест должен будет только быть записан для одного примера каждой вещи, которую Вы пытаетесь протестировать, и PEX будет в состоянии тогда решить, что элементы данных ведьмы повредят тест.

327
задан Alok 16 August 2015 в 00:12
поделиться

1 ответ

Here’s решение, что doesn’t изменяют цветовое пространство из исходного изображения. Если Вы хотите нормализовать ориентацию полутонового изображения, Вам не повезло со всеми решениями на основе UIGraphicsBeginImageContextWithOptions, потому что она создает контекст в цветовом пространстве RGB. Вместо этого необходимо создать контекст с теми же свойствами как исходное изображение и потянуть:

extension UIImage {
    static let rotatedOrentations: [UIImage.Orientation] = [.left, .leftMirrored, .right, .rightMirrored]

    func normalizedImage() -> UIImage {
        if imageOrientation == .up {
            return self
        }

        let image = self.cgImage!
        let swapOrientation = UIImage.rotatedOrentations.contains(imageOrientation)
        let width = swapOrientation ? image.height : image.width
        let height = swapOrientation ? image.width : image.height
        let context = CGContext(data: nil, width: width, height: height, bitsPerComponent: image.bitsPerComponent, bytesPerRow: image.bytesPerRow, space: image.colorSpace!, bitmapInfo: image.bitmapInfo.rawValue)!
        let flipVertical = CGAffineTransform(a: 1, b: 0, c: 0, d: -1, tx: 0, ty: CGFloat(height));
        context.concatenate(flipVertical)
        UIGraphicsPushContext(context)
        self.draw(at: .zero)
        UIGraphicsPopContext()

        return UIImage(cgImage: context.makeImage()!)
    }
}
4
ответ дан 23 November 2019 в 00:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: