Here is a sample that I use to create CGImages from an RGBA byte array:
struct m_RGBColor // My own data-type to hold the picture information
{
var Alpha: UInt8 = 255
var Red: UInt8 = 0
var Green: UInt8 = 0
var Blue: UInt8 = 0
}
var pixelArray: [m_RGBColor] = [m_RGBColor]()
var pixelColor: m_RGBColor = m_RGBColor()
for y in 0 ..< height // Height of your Pixture
{
for x in 0 ..< width // Width of your Picture
{
onePixel.Alpha = 0 // Fill one Pixel with your Picture Data
onePixel.Red = 0 // Fill one Pixel with your Picture Data
onePixel.Green = 0 // Fill one Pixel with your Picture Data
onePixel.Blue = 0 // Fill one Pixel with your Picture Data
pixelArray.append(onePixel)
}
}
let bitmapCount: Int = pixelArray.count
let elmentLength: Int = sizeof(m_RGBColor)
let render: CGColorRenderingIntent = CGColorRenderingIntent.RenderingIntentDefault
let rgbColorSpace = CGColorSpaceCreateDeviceRGB()
let bitmapInfo: CGBitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.PremultipliedFirst.rawValue)
let providerRef: CGDataProvider? = CGDataProviderCreateWithCFData(NSData(bytes: &pixelArray, length: bitmapCount * elmentLength))
let cgimage: CGImage? = CGImageCreate(width, height, 8, 32, width * elmentLength, rgbColorSpace, bitmapInfo, providerRef, nil, true, render)
if cgimage != nil
{
// You have success, the Image is valid and usable
}