如何将UnsafeMutableBufferPointer的一部分作为新的UnsafeMutableBufferPointer

时间:2017-04-25 12:24:06

标签: swift

我在swift中玩图像操作。

使用this代码访问图片像素。

使用UnsafeMutableBufferPointer指向图像像素。

所有像素都在一个数据列表中,每个像素位置都需要计算:

let index = y * rgba.width + x
let pixel = pixels[index]

我试图为get

添加subscript
public subscript(index: Int) -> [Pixel] {
    get {
        var column = [Pixel]()
        for i in 0..<height {
            column.append(pixels[index*height + i])
        }

        return column
    }
}

那么是否有一种方法可以返回指向右列的UnsafeMutableBufferPointer?而不是数组?

我试图避免更多内存分配。

由于

1 个答案:

答案 0 :(得分:0)

喜欢那个?:

public subscript(rowIndex: Int) -> UnsafePointer<Pixel> {
  return pixels.baseAddress!.advanced(by: rowIndex * height)
}
public subscript(rowIndex: Int) -> UnsafeBufferPointer<Pixel> {
  return UnsafeBufferPointer(start: self[rowIndex], count: height)
}