获取图像中的像素值

时间:2015-09-28 10:23:29

标签: ios xcode swift pixel

我正在计算拍摄照片中像素的RGB值。我有这个代码

func getPixelColorAtLocation(context: CGContext, point: CGPoint) -> Color {

    self.context = createARGBBitmapContext(imgView.image!)

    let data = CGBitmapContextGetData(context)
    let dataType = UnsafePointer<UInt8>(data)

    let offset = 4 * ((Int(imageHeight) * Int(point.x)) + Int(point.y))
    var color = Color()
    color.blue = dataType[offset]
    color.green = dataType[offset + 1]
    color.red = dataType[offset + 2]
    color.alpha = dataType[offset + 3]
    color.point.x = point.x
    color.point.y = point.y

但我不确定这行代码中的含义。

let offset = 4 * ((Int(imageHeight) * Int(point.x)) + Int(point.y))

任何帮助? 提前致谢

1 个答案:

答案 0 :(得分:0)

图像是像素集。为了获得(x,y)点的像素,您需要计算该集合的offset

如果您使用dataType[0],则它没有偏移量,因为它指向指针所在的位置。如果你使用dataType[10],那就意味着从指针所在的开头拿了第10个元素。

由于事实,我们有RGBA颜色模型,您应该乘以4,然后您需要获得x的偏移(它将是x ),并y(它将是图像的width乘以y,以获得必要的列)或:

offset = x + width * y
// offset, offset + 1, offset + 2, offset + 3  <- necessary values for you

想象一下,就像你有一个包含值的长数组。

如果你想象以一维数组的形式实现二维数组,那将是很清楚的。我希望它会对你有所帮助。