【发布时间】:2016-06-01 21:39:02
【问题描述】:
我正在尝试将图像像素绘制到图形上下文中以迭代和打印图像的色彩空间信息值。我设法缓冲了所有原始像素值。但是我尝试使用 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”处给出错误,说“未解析的标识符”。我也导入了 coreGraphics,它在这个地方不接受任何值。可以提出什么建议?
请帮忙。
【问题讨论】:
-
我已经设法通过使用 CGFloat(variables) 进行类型转换来纠正 CGContextDrawImage。但是现在 CGImageCreate 的 KCGRenderingIntent 值很难。
-
不应该是 Swift 中的 .RenderingIntentDefault 吗?
-
使用 CGColorRenderingIntent.RenderingIntentDefault 有所帮助。伟大的。谢谢你。 Glenn Howes,您可以将其作为答案发布,以便我接受?