gpt4 book ai didi

与 iPhone 5s 或 5se 相比,iPhone 5 上的 Swift 色彩空间不同

转载 作者:行者123 更新时间:2023-11-28 12:25:20 26 4
gpt4 key购买 nike

我单击图像以返回像素颜色。这工作正常,但我发现它不适用于 iPhone 5。它适用于 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

最佳答案

CGContext(data: pixel, width: 1, height: 1, bitsPerComponent: 8, bytesPerRow: 4, ...)

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

let pixel = UnsafeMutablePointer<UInt8>.allocate(capacity: 4)

在您的情况下,只有第一个 CGFloat 的前 4 个字节会被设置,所有剩余数据都是 undefined(并且可能导致 nan 或一些任意值)。即使得不到nan,值将是错误的。

关于与 iPhone 5s 或 5se 相比,iPhone 5 上的 Swift 色彩空间不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43572515/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com