我在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
?而不是数组?
我试图避免更多内存分配。
由于
答案 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)
}