我有一个像素数组,需要从中创建UIImage。像素阵列对RGBA格式的每个像素使用4个字节。即00000000 - 黑色透明,000000ff - 黑色不透明。
使用swift和xcode 6.3或更高版本创建UIImage。
需要遍历像素阵列,为每个像素获取每四个字节,并从像素中创建图像。
可以查看目标c引用,但不能清楚swift的代码示例。
答案 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
}