在swift中从RGBA数据创建UIImage

时间:2015-07-05 05:38:49

标签: ios swift rgba

我有一个像素数组,需要从中创建UIImage。像素阵列对RGBA格式的每个像素使用4个字节。即00000000 - 黑色透明,000000ff - 黑色不透明。

使用swift和xcode 6.3或更高版本创建UIImage。

需要遍历像素阵列,为每个像素获取每四个字节,并从像素中创建图像。

可以查看目标c引用,但不能清楚swift的代码示例。

1 个答案:

答案 0 :(得分:1)

以下是我用来从RGBA字节数组创建CGImages的示例:

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
}