• CIFilterを使う
  • CIColorControls
  • inputBrightnessに値を設定
  • 値は−1.01.0
 1import CoreImage
 2
 3extention UIImage {
 4    func adjustBrightness(brightness: Double) -> UIImage? {
 5        let ciImage = CIImage(cgImage: self.cgImage!)
 6
 7        let filter = CIFilter(name: "CIColorControls")
 8        filter?.setValue(ciImage, forKey: kCIInputImageKey)
 9        filter?.setValue(brightness, forKey: "inputBrightness")
10
11        guard let newCIImage = filter?.outputImage else {
12            return nil
13        }
14
15        let context = CIContext(options: nil)
16        guard let cgImage = context.createCGImage(newCIImage, from: newCIImage.extent) else {
17            return nil
18        }
19        return UIImage(cgImage: cgImage, scale: 1.0, orientation: .up)
20    }
21}

こんな感じで使える。

1let image = UIImage(...)
2let newImage = image.adjustBrightness(brightness: 0.5)