XCode 13.4.1
Swift 5
针对iPhone模拟器进行测试11,13
我试图理解为什么在下面的函数ctx。makeImage()在playground中返回一个有效的图像,但在模拟器中返回一个nil。我假设它是makeImage()参数中的某个东西,但如果我能弄清楚它是什么,我就很惊讶了。如有任何建议,我们将不胜感激。
func loadImage() -> CGImage? {
var srgbArray = [UInt32](repeating: 0xFF204080, count: 512*512)
_ = srgbArray.withUnsafeMutableBytes { (ptr) -> CGImage? in
let ctx = CGContext(
data: ptr.baseAddress,
width: 512,
height: 512,
bitsPerComponent: 8,
bytesPerRow: 4*512,
space: CGColorSpace(name: CGColorSpace.sRGB)!,
bitmapInfo: CGBitmapInfo.byteOrder32Little.rawValue +
CGImageAlphaInfo.premultipliedFirst.rawValue
)!
let cgImage = ctx.makeImage()
print("cgImage", cgImage)
return(nil)
}
return(nil)
}
1条答案
按热度按时间eiee3dmh1#
问题可能是填充数组时
0xFF204080
值的字节顺序。因为你想要图像的小字节序,改变使用:致:
这将确保数组数据是适当的,而不管运行代码的平台是什么。