Swift3 如何将NSData转换为数据

Swift3 如何将NSData转换为数据,swift3,nsdata,nsimage,Swift3,Nsdata,Nsimage,我已经创建了UInt8的数组 var pixels: [UInt8] = [] 由alpha、红色、绿色和蓝色组件填充,需要从he阵列创建NSImage。我编写了以下代码 let imageData = NSData(bytes: pixels, length: 1000) Swift.print(imageData) newImage = NSImage(data: imageData as Data)! 其中print命令打印我的字节,如ff0493f8 ff455772 ffa281e

我已经创建了UInt8的数组

var pixels: [UInt8] = []
由alpha、红色、绿色和蓝色组件填充,需要从he阵列创建NSImage。我编写了以下代码

let imageData = NSData(bytes: pixels, length: 1000)
Swift.print(imageData)
newImage = NSImage(data: imageData as Data)!
其中print命令打印我的字节,如ff0493f8 ff455772 ffa281ed ff9c14d7 ff6eb302。。。但创建newImage失败,错误为“致命错误:在展开可选值时意外发现nil”。 我做错了什么? 谢谢。

您有一些问题

  • 为什么要使用
    NSData
    ?只需使用
    数据
  • 您的错误是,
    imageData
    实际上并不表示有效的图像,因此
    NSImage
    nil
    ,但您试图强制将其展开
  • 试着这样做:

    let imageData = Data(bytes: pixels)
    Swift.print(imageData)
    if let newImage = NSImage(data: imageData) {
        // Do something with the image
    } else {
        // oops - can't create the image
    }
    
    你有一些问题

  • 为什么要使用
    NSData
    ?只需使用
    数据
  • 您的错误是,
    imageData
    实际上并不表示有效的图像,因此
    NSImage
    nil
    ,但您试图强制将其展开
  • 试着这样做:

    let imageData = Data(bytes: pixels)
    Swift.print(imageData)
    if let newImage = NSImage(data: imageData) {
        // Do something with the image
    } else {
        // oops - can't create the image
    }
    

    最有可能的是,数据转换不是问题所在。您确定数据包含NSImage接受格式的图像数据吗?(JPEG、PNG、PDF…)不接受原始像素数据…很可能,转换为数据不是问题所在。您确定数据包含NSImage接受格式的图像数据吗?(JPEG、PNG、PDF…)不接受原始像素数据…让imageData=data(字节:像素)和打印命令写入字节数bt通过newImage=NSImage创建图像(数据:imageData)!以相同的“nil”错误结束。所以我假设我的像素数组不包含有效的aRGB字节。有什么提示吗?谢谢。
    NSImage
    希望数据采用受支持的格式(PNG、JPEG等)。原始RGB值不是其中之一。确定。那么,有没有关于如何处理RGB的提示?ThnxI真的不知道,但是看看
    NSBitmapImageRep
    类。让imageData=Data(字节:像素)和print命令写入字节数bt通过newImage=NSImage创建图像(数据:imageData)!以相同的“nil”错误结束。所以我假设我的像素数组不包含有效的aRGB字节。有什么提示吗?谢谢。
    NSImage
    希望数据采用受支持的格式(PNG、JPEG等)。原始RGB值不是其中之一。确定。那么,有没有关于如何处理RGB的提示?ThnxI真的不知道,但是看看
    NSBitmapImageRep
    类。