gpt4 book ai didi

ios - 将 RGBA 数组转换为 UIImage 时出现错误结果

转载 作者:行者123 更新时间:2023-11-30 12:03:11 25 4
gpt4 key购买 nike

我正在尝试从 ARGB 原始数组创建 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!)

结果是这样的图像:

enter image description here

请注意,图像是蓝色而不是红色,还有奇怪的垂直线。

我做错了什么?

最佳答案

我自己回答。

这是因为 rgbArray (Int?) 的类型,如果我不将其设置为可选,它可以正常工作,例如:

var rgbArray = [Int](repeating: 0xffff0000, count: 307200)

我仍然无法理解这种奇怪的行为,但至少我让它工作了。

关于ios - 将 RGBA 数组转换为 UIImage 时出现错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46972842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com