Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 与iPhone 5s或5se相比,iPhone 5上的快速颜色空间有所不同_Swift_Nan_Cgcontext_Cgcolorspace - Fatal编程技术网

Swift 与iPhone 5s或5se相比,iPhone 5上的快速颜色空间有所不同

Swift 与iPhone 5s或5se相比,iPhone 5上的快速颜色空间有所不同,swift,nan,cgcontext,cgcolorspace,Swift,Nan,Cgcontext,Cgcolorspace,我点击图像返回像素颜色。这很好用,但我发现它在iPhone5上不起作用。它适用于iPhone 5s、5SE和所有其他尺寸的手机。我不明白为什么。 以下代码将iPhone 5上的红色和蓝色标记为nan // returns the color data of the pixel at the currently selected point func getPixelColorAtPoint(_ point:CGPoint)-> UIColor{ let pixel = UnsafeM

我点击图像返回像素颜色。这很好用,但我发现它在iPhone5上不起作用。它适用于iPhone 5s、5SE和所有其他尺寸的手机。我不明白为什么。 以下代码将iPhone 5上的红色和蓝色标记为nan

//  returns the color data of the pixel at the currently selected point

func getPixelColorAtPoint(_ point:CGPoint)-> UIColor{
 let pixel = UnsafeMutablePointer<CGFloat>.allocate(capacity: 4)
 let colorSpace = CGColorSpaceCreateDeviceRGB()
 let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.premultipliedLast.rawValue)
 if let context = CGContext(data: pixel, width: 1, height: 1, bitsPerComponent: 8, bytesPerRow: 4, space: colorSpace, bitmapInfo: bitmapInfo.rawValue){
   context.translateBy(x: -point.x, y: -point.y)
   torsoImage.layer.render(in: context)
 }
 let pColor:UIColor = UIColor(red: CGFloat(pixel[0])/255.0, green: CGFloat(pixel[1])/255.0, blue: CGFloat(pixel[2])/255.0, alpha: CGFloat(pixel[3])/255.0)

 pixel.deallocate(capacity: 4)
 print("Colour touch is \(pColor)")
 return pColor
}

//Colour touch is UIExtendedSRGBColorSpace nan 1.94443e+12 nan 1.48678e-42
//返回当前选定点的像素颜色数据
func getPixelColorAtPoint(point:CGPoint)->UIColor{
让像素=不可分配指针。分配(容量:4)
让colorSpace=CGColorSpaceCreateDeviceRGB()
设bitmapInfo=CGBitmapInfo(rawValue:CGImageAlphaInfo.PremultipledLast.rawValue)
如果let context=CGContext(数据:像素,宽度:1,高度:1,bitsPerComponent:8,bytesPerRow:4,空格:colorSpace,bitmapInfo:bitmapInfo.rawValue){
context.translateBy(x:-point.x,y:-point.y)
torsoImage.layer.render(在:上下文中)
}
设pColor:UIColor=UIColor(红色:CGFloat(像素[0])/255.0,绿色:CGFloat(像素[1])/255.0,蓝色:CGFloat(像素[2])/255.0,alpha:CGFloat(像素[3])/255.0)
像素。取消分配(容量:4)
打印(“彩色触摸是\(pColor)”)
返回颜色
}
//彩色触控是UIExtendedSRGBColorSpace nan 1.94443e+12 nan 1.48678e-42
创建一个由四个字节(每个颜色分量一个字节)备份的图形上下文,因此必须传递一个
UInt8
数组:

let pixel = UnsafeMutablePointer<UInt8>.allocate(capacity: 4)
let pixel=UnsafeMutablePointer.allocate(容量:4)
在您的情况下,只会设置第一个
CGFloat
的前4个字节,所有剩余数据都未定义(可能会导致
nan
或某些任意值)。即使你没有得到
nan
,值将错误

创建一个由四个字节(每个颜色分量一个字节)备份的图形上下文,因此必须传递一个
UInt8
数组:

let pixel = UnsafeMutablePointer<UInt8>.allocate(capacity: 4)
let pixel=UnsafeMutablePointer.allocate(容量:4)
在您的情况下,只会设置第一个
CGFloat
的前4个字节,所有剩余数据都未定义(可能会导致
nan
或某些任意值)。即使你没有得到
nan
,值将错误

最有可能的是,
pixel
应该是一个
UInt8
数组,而不是
CGFloat
。这是可行的,但我如何将其标记为一个答案(这是一个注释)?这是因为iPhone 5的内存比其他用于容纳浮点数组的内存小吗?很可能,
pixel
应该是一个包含
UInt8
的数组,而不是
CGFloat
。这可以工作,但我如何将其标记为答案(这是一个注释)?这是因为iPhone 5的内存比其他用于容纳浮点数组的内存小吗?Brilliant修复了它。也谢谢你的解释。Brilliant修复了它。也谢谢你的解释。