【发布时间】:2016-11-30 03:04:15
【问题描述】:
L.E:我找到了问题,现在它不再崩溃了,但现在(新问题)它没有按应有的方式绘制图像..它已损坏...
我有一个像素数组,需要先转换为 CGImage,然后再转换为 NSImage。我已经尝试过在 ios 上使用此版本的代码来获取 aUIImage,但我收到了一个我无法处理的错误:CGImageCreate: invalid image bits/pixel or bytes/row。 致命错误:在展开可选值时意外发现 nil
任何想法,任何帮助将不胜感激!谢谢!我把代码放在这里:
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 结构数组替换为像素数据数组。
-
这个方法我试过了,可惜崩溃了……
-
然后更新您的问题并显示您尝试过的内容、崩溃的位置/方式等。
-
您指出的代码完全相同,唯一的例外是原始像素参数。这就是为什么我需要这个问题仍然悬而未决...
标签: arrays swift byte pixel cgimage