获取图像中的像素值
Getting Pixel value in the image
我正在计算拍摄照片中像素的 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))
有什么帮助吗??
提前致谢
图像是像素集。为了获得 (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
想象一下,就像您有一个包含值的长数组。
想象一下二维数组以一维数组的形式实现就清楚了。希望对你有帮助。
我正在计算拍摄照片中像素的 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))
有什么帮助吗?? 提前致谢
图像是像素集。为了获得 (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
想象一下,就像您有一个包含值的长数组。
想象一下二维数组以一维数组的形式实现就清楚了。希望对你有帮助。