CGImageCreate 在 swift 中给出错误
CGImageCreate is giving error in swift
我正在尝试将图像像素绘制到图形上下文中以迭代和打印图像的色彩空间信息值。我设法缓冲了所有原始像素值。但是我尝试使用 CGImageCreate 绘制位图图像时遇到了障碍,并出现以下错误,也是 screenshot attached。这是我写的代码。
func createRGBAPixel(inImage: CGImageRef) -> CGContextRef {
//Image width, height
let pixelWidth = CGImageGetWidth(inImage)
let pixelHeight = CGImageGetHeight(inImage)
//Declaring number of bytes
let bytesPerRow = Int(pixelWidth) * 4
let byteCount = bytesPerRow * Int(pixelHeight)
//RGB color space
let colorSpace = CGColorSpaceCreateDeviceRGB()
//Allocating image data
let mapData = malloc(byteCount)
let mapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.PremultipliedFirst.rawValue)
//Create bitmap context
let context = CGBitmapContextCreate(mapData, pixelWidth, pixelHeight, Int(8), Int(bytesPerRow), colorSpace, mapInfo.rawValue)
let imageRef = CGBitmapContextCreateImage(context)
CGContextDrawImage(context, CGRectMake(0, 0, pixelWidth, pixelHeight), imageRef)
let data = CGDataProviderCopyData(CGImageGetDataProvider(imageRef)) as! NSData
let pixels = UnsafePointer<UInt8>(data.bytes)
var newPixelsArray = [UInt8](count: byteCount, repeatedValue: 0)
let provider = CGDataProviderCreateWithData(nil , &newPixelsArray, data.length, nil)
let newImageRef = CGImageCreate(pixelWidth, pixelHeight, CGImageGetBitsPerComponent(imageRef), CGImageGetBitsPerPixel(imageRef), bytesPerRow, colorSpace, mapInfo, provider, nil, false, kCGRenderingIntentDefault)
return context!
CGImageCreate 在 "kCGRenderingIntentDefault" 处给出错误说 "unresolved identifier"。我也导入了 coreGraphics,它在这个地方不接受任何值。有什么建议?
请帮忙。
由于 Swift SDK 对此类枚举所做的操作,您必须将 kCGRenderingIntentDefault 替换为 .defaultIntent,如:
let newImageRef = CGImageCreate(pixelWidth, pixelHeight, CGImageGetBitsPerComponent(imageRef), CGImageGetBitsPerPixel(imageRef), bytesPerRow, colorSpace, mapInfo, provider, nil, false, .defaultIntent)
我正在尝试将图像像素绘制到图形上下文中以迭代和打印图像的色彩空间信息值。我设法缓冲了所有原始像素值。但是我尝试使用 CGImageCreate 绘制位图图像时遇到了障碍,并出现以下错误,也是 screenshot attached。这是我写的代码。
func createRGBAPixel(inImage: CGImageRef) -> CGContextRef {
//Image width, height
let pixelWidth = CGImageGetWidth(inImage)
let pixelHeight = CGImageGetHeight(inImage)
//Declaring number of bytes
let bytesPerRow = Int(pixelWidth) * 4
let byteCount = bytesPerRow * Int(pixelHeight)
//RGB color space
let colorSpace = CGColorSpaceCreateDeviceRGB()
//Allocating image data
let mapData = malloc(byteCount)
let mapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.PremultipliedFirst.rawValue)
//Create bitmap context
let context = CGBitmapContextCreate(mapData, pixelWidth, pixelHeight, Int(8), Int(bytesPerRow), colorSpace, mapInfo.rawValue)
let imageRef = CGBitmapContextCreateImage(context)
CGContextDrawImage(context, CGRectMake(0, 0, pixelWidth, pixelHeight), imageRef)
let data = CGDataProviderCopyData(CGImageGetDataProvider(imageRef)) as! NSData
let pixels = UnsafePointer<UInt8>(data.bytes)
var newPixelsArray = [UInt8](count: byteCount, repeatedValue: 0)
let provider = CGDataProviderCreateWithData(nil , &newPixelsArray, data.length, nil)
let newImageRef = CGImageCreate(pixelWidth, pixelHeight, CGImageGetBitsPerComponent(imageRef), CGImageGetBitsPerPixel(imageRef), bytesPerRow, colorSpace, mapInfo, provider, nil, false, kCGRenderingIntentDefault)
return context!
CGImageCreate 在 "kCGRenderingIntentDefault" 处给出错误说 "unresolved identifier"。我也导入了 coreGraphics,它在这个地方不接受任何值。有什么建议?
请帮忙。
由于 Swift SDK 对此类枚举所做的操作,您必须将 kCGRenderingIntentDefault 替换为 .defaultIntent,如:
let newImageRef = CGImageCreate(pixelWidth, pixelHeight, CGImageGetBitsPerComponent(imageRef), CGImageGetBitsPerPixel(imageRef), bytesPerRow, colorSpace, mapInfo, provider, nil, false, .defaultIntent)