除了CGContextDrawImage之外,访问CIImage或CGImage的Bitmap

时间:2016-03-30 09:10:19

标签: swift performance bitmapdata ciimage cgcontextdrawimage

我想获得RGB(实际上,所提供的图像已被灰度化,因此灰度信息就足够了)CIImage的各个像素的值。

我目前有以下代码:

//
// Conversion of CIImage to CGImage
//
   func convertCIImageToCGImage(inputImage: CIImage) -> CGImage! {
   return CIContext(options: nil).createCGImage(inputImage, fromRect:     inputImage.extent)
}


 process(image: CGImage) {

    let img=convertCIImageToCGImage(image)

    // Set image width, height
    width = CGImageGetWidth(img)
    height = CGImageGetHeight(img)

    let colorSpace = CGColorSpaceCreateDeviceRGB()

    let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.PremultipliedFirst.rawValue)

    // Create the bitmap context (ARGB)
    context = CGBitmapContextCreate(nil, width, height, 8, bitmapBytesPerRow, colorSpace, bitmapInfo.rawValue)!

    // draw the image onto the context
    let rect = CGRect(x: 0, y: 0, width: width, height: height)
    CGContextDrawImage(context, rect, img)

    let uncasted_data = CGBitmapContextGetData(context)
    data = UnsafePointer<UInt8>(uncasted_data)

    ...
}

然后我使用数据变量访问各个像素。我意识到这个功能的大部分时间花在

CGContextDrawImage(context, rect, img)

是否有其他方法可以访问CIImage或CGImage的位图?

0 个答案:

没有答案