Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save sunilsharma08/72e2c4ced1b36ba7e42a9969e67fbeb0 to your computer and use it in GitHub Desktop.
Save sunilsharma08/72e2c4ced1b36ba7e42a9969e67fbeb0 to your computer and use it in GitHub Desktop.

Revisions

  1. @marchinram marchinram revised this gist Aug 4, 2015. 1 changed file with 5 additions and 5 deletions.
    10 changes: 5 additions & 5 deletions UIImage+PixelColor.swift
    Original file line number Diff line number Diff line change
    @@ -15,12 +15,12 @@ extension UIImage {
    let numberOfComponents = 4
    let pixelData = ((Int(size.width) * y) + x) * numberOfComponents

    let r: UInt8 = data[pixelData]
    let g: UInt8 = data[pixelData + 1]
    let b: UInt8 = data[pixelData + 2]
    let a: UInt8 = data[pixelData + 3]
    let r = CGFloat(data[pixelData]) / 255.0
    let g = CGFloat(data[pixelData + 1]) / 255.0
    let b = CGFloat(data[pixelData + 2]) / 255.0
    let a = CGFloat(data[pixelData + 3]) / 255.0

    return UIColor(red: CGFloat(r) / 255.0, green: CGFloat(g) / 255.0, blue: CGFloat(b) / 255.0, alpha: CGFloat(a) / 255.0)
    return UIColor(red: r, green: g, blue: b, alpha: a)
    }

    }
  2. @marchinram marchinram created this gist Aug 4, 2015.
    26 changes: 26 additions & 0 deletions UIImage+PixelColor.swift
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,26 @@
    import UIKit

    extension UIImage {

    subscript (x: Int, y: Int) -> UIColor? {

    if x < 0 || x > Int(size.width) || y < 0 || y > Int(size.height) {
    return nil
    }

    let provider = CGImageGetDataProvider(self.CGImage)
    let providerData = CGDataProviderCopyData(provider)
    let data = CFDataGetBytePtr(providerData)

    let numberOfComponents = 4
    let pixelData = ((Int(size.width) * y) + x) * numberOfComponents

    let r: UInt8 = data[pixelData]
    let g: UInt8 = data[pixelData + 1]
    let b: UInt8 = data[pixelData + 2]
    let a: UInt8 = data[pixelData + 3]

    return UIColor(red: CGFloat(r) / 255.0, green: CGFloat(g) / 255.0, blue: CGFloat(b) / 255.0, alpha: CGFloat(a) / 255.0)
    }

    }