我试图通过将UnsafeMutablePointer<Void>
映射到以下结构来填充具有RGBA值的图像的像素缓冲区
struct Color {
var red:CGFloat
var green:CGFloat
var blue:CGFloat
var alpha:CGFloat
}
然后循环像素
func fillImage (pixelData:UnsafeMutablePointer<Void>, numBytes:Int) {
var pixels = UnsafeMutablePointer<Color>(pixelData)
let numPixels = Int(numBytes / sizeof(Color))
for i in 0...numPixels-1 {
pixels[i] = Color(red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0)
}
}
我希望我的图像完全是红色,但像素是绿色的。将1.0移动到绿色或蓝色位置也不起作用。我能够使用UnsafeMutablePointer<Float>(pixelData)
一次正确设置一个浮动像素颜色,但显然使用Color
struct
会更容易。
答案 0 :(得分:1)
在所有64位设备(例如iPhone 5s和更高版本)上,CGFloat
是
64位浮点数。如果要使用创建RGBA数据
4字节浮点值,您必须将CGFloat
替换为Float
在颜色结构中。