0
私はARGB生の配列からUIImageを作成しようとしています。RGBA配列をUIImageに変換すると間違った結果が発生する
まず、640x480ピクセル(307200)の配列を作成し、すべて赤に設定します。
var rgbArray = [Int?](repeating: nil, count: 307200)
for i in 0 ..< 307200 {
rgbArray[i] = 0x00ff0000 // Red pixel
}
次に画像変換:画像は青の代わりに赤、またその奇妙であること
注:
let data = UnsafeMutablePointer(mutating: rgbArray)
let releaseMaskImagePixelData: CGDataProviderReleaseDataCallback = { (info: UnsafeMutableRawPointer?, data: UnsafeRawPointer, size: Int) ->() in
return
}
let provider: CGDataProvider! = CGDataProvider(dataInfo: nil, data: data, size: 307200, releaseData: releaseMaskImagePixelData)
let cgImage = CGImage(
width: 640,
height: 480,
bitsPerComponent: 8,
bitsPerPixel: 32,
bytesPerRow: 2560,
space: CGColorSpaceCreateDeviceRGB(),
bitmapInfo: CGBitmapInfo(rawValue: CGImageAlphaInfo.noneSkipLast.rawValue),
provider: provider,
decode: nil,
shouldInterpolate: true,
intent: .defaultIntent
)
let uiImage = UIImage(cgImage: cgImage!)
結果、このような画像であります垂直線。
私は間違っていますか?
リアルタイムで '[Int](繰返し:0x00ff0000、カウント:307200)'配列をリアルタイムで作成するにはArrayの繰り返し初期化子を使用することができます –
btw赤色ピクセルhexaのUIColorは '0xffff0000' –