使用Swift从数据阵列逐个像素地创建图像

时间:2016-02-21 14:34:09

标签: swift image bitmap

我是否尝试从我获取的数据集中创建一个图像(8位灰度位图?)(它具有xy坐标和实际的像素数据信息0-255)。

现在我想通过使用Apple的Cocoa / Foundation /等来实现这一目标。 Swift中的框架,但我似乎无法理解它是如何实现的。

除了创建这个简单的灰度图像之外,我真的不需要做任何额外的图像处理。

所以基本工作流程看起来像这样:

  1. 按大小初始化图像为8位灰度
  2. 使用数组中的相应信息填充每个像素
  3. 将图像保存到文件中

2 个答案:

答案 0 :(得分:1)

这里有一段代码,我把它拼凑在一起,实际上用我的数据保存了一个bmp文件。所以它确实有效。我认为绝对不是好的代码。但我只想尝试一个有效的例子,我稍后会对此进行改进。

var myImageDataArray : [UInt8] = [167, 241, 217, 42, 130, 200, 216, 254, 67, 77, 152, 85, 140, 226, 179, 71]
let dataProv = CGDataProviderCreateWithData(nil, myImageDataArray, myImageDataArray.count, nil)
let myCG = CGImageCreate(4, 4, 8, 8, 4, CGColorSpaceCreateWithName(kCGColorSpaceGenericGrayGamma2_2), CGBitmapInfo.ByteOrderDefault, dataProv, nil, false, CGColorRenderingIntent.RenderingIntentDefault)
let testTIFF = NSBitmapImageRep(CGImage: myCG!)
let mynewData = testTIFF.representationUsingType(NSBitmapImageFileType.NSTIFFFileType, properties: [NSImageCompressionMethod: 1])
mynewData?.writeToFile("testTIFF.tiff", atomically: false)

答案 1 :(得分:0)

如果你有一个[UInt8]图像表示,你的代码将如下所示:

let imgBytes = // image array [UInt8]
let imgData = NSData(bytes: imgBytes, length: imgBytes.count)
UIImage(data: imgData)