イメージのピクセルをグラフィックスコンテキストに描画して、イメージの色空間情報の値を繰り返して出力しようとしています。私はすべての生のピクセル値をバッファリングすることに成功しました。しかし、CGImageCreateを使ってビットマップイメージを描画しようとすると、次のエラー(screenshot attached)が発生します。これは私の書かれたコードです。CGImageCreateが即座にエラーを返す
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もインポートしましたが、この場所では値を受け入れません。何が示唆できますか?
助けてください。そのためスウィフトSDKは、このような列挙に何をするかの
私はCGFloat(変数)を持つタイプキャストでCGContextDrawImageを是正するために管理しています。しかし、今CGImageCreateのKCGRenderingIntentの値は苦労しています。 –
Swiftでは.IntentDefaultをレンダリングするべきではありませんか? –
CGColorRenderingIntent.RenderingIntentDefaultを使用すると助けになりました。すばらしいです。ありがとうございました。 Glenn Howes、答えとして投稿できるので、私はそれを受け入れることができますか? –