【问题标题】:CGImageCreate is giving error in swiftCGImageCreate 在 swift 中给出错误
【发布时间】: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,您可以将其作为答案发布,以便我接受?

标签: ios swift pixels


【解决方案1】:

由于 Swift SDK 对此类枚举所做的事情,您必须将 kCGRenderingIntentDefault 替换为 .defaultIntent,如下所示:

let newImageRef = CGImageCreate(pixelWidth, pixelHeight, CGImageGetBitsPerComponent(imageRef), CGImageGetBitsPerPixel(imageRef), bytesPerRow, colorSpace, mapInfo, provider, nil, false, .defaultIntent)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多