1
LE:我发现了这个问题,现在它不会崩溃了,但现在(新问题)它不会像应该那样绘制图像。 ...从像素阵列问题获取NSImage(Swift)
我有一个像素数组,我需要变成一个CGImage,然后进入NSImage。我试过这个版本的代码用于获取iUIImage的ios,我得到一个我无法处理的错误:CGImageCreate:无效的图像位/像素或字节/行。 致命错误:意外地发现零,而解包一个可选值
任何想法,任何帮助将诚实地赞赏!谢谢!我会在这里让代码:
func imageFromPixels(image : CGImage, size:NSSize,pixels: UnsafeMutablePointer<UInt8>, width: Int, height: Int)-> NSImage {
let rgbColorSpace = CGColorSpaceCreateDeviceRGB()
let bitmapInfo:CGBitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.PremultipliedFirst.rawValue)
let bitsPerComponent = CGImageGetBitsPerComponent(image)
let bitsPerPixel = CGImageGetBitsPerPixel(image)
let bytesPerRow = CGImageGetBytesPerRow(image)
var data = pixels
let providerRef = CGDataProviderCreateWithCFData(
NSData(bytes: &data, length: height * width * sizeof(UInt8))
)
let cgim = CGImageCreate(
width,
height,
bitsPerComponent,
bitsPerPixel,
bitsPerRow,
rgbColorSpace,
bitmapInfo,
providerRef,
nil,
true,
.RenderingIntentDefault
)
return NSImage(CGImage: cgim!, size: size)
}
请注意,这不是重复的,因为我需要在osx上开发,而不是ios,因为我没有使用RGB结构。 –
请注意,答案中的代码首先创建一个CGImage,并且应该可以在OS X和iOS上使用。您可以用一组像素数据替换RGB结构数组。 –
我试过这种方法,不幸的是它崩溃了... –