ios - 从原始像素创建图像,但颜色无法根据 RGBA 十六进制值显示

标签 ios swift uiimage cgimage bitmapdata

    let colorSpace = CGColorSpaceCreateDeviceRGB()
    let bitmapInfo = CGBitmapInfo(rawValue: CGBitmapInfo.ByteOrder32Big.rawValue | CGImageAlphaInfo.PremultipliedLast.rawValue)


    let bitmap = CGBitmapContextCreate(nil, 192, 192, 8, 0, colorSpace,bitmapInfo.rawValue)

    let bitmapData = UnsafeMutablePointer<UInt32>(CGBitmapContextGetData(bitmap))
    var j = 0
    for var i = 0; i < 192; i++ {
        for j = 0; j < 192; j = j + 16 {
            for var k = 0; k < 16; k++ {

                let offset = matrix.rows * i + j + k
                if(k < 4){
                    bitmapData[offset] = 0xff0000ff  //red
                }
                else{
                    bitmapData[offset] = 0xffff00ff  //yellow
                }
            }
        }
    }

    let imageRef = CGBitmapContextCreateImage(bitmap)
    let image = UIImage(CGImage: imageRef!)

上面是我从原始像素创建图像的代码。我设置的颜色是0xff0000ff和0xffff00ff。但是,当图像在UIimageview中显示时,它会显示一些随机颜色或无法显示颜色。

例如,当前颜色为 0xffff00ff 和 0xff0000ff,但我的应用程序显示如下:

enter image description here

有人知道如何设置位图颜色吗?

最佳答案

我在您的输出中看到红色和洋红色。你说你使用了颜色值 0xffff00ff0xff0000ff 。因此我推断你的位图中的字节顺序是ABGR。

如果您将 bitmapInfo 更改为 CGBitmapInfo.ByteOrder32Little.rawValue | CGImageAlphaInfo.PremultipliedLast.rawValue ,您将得到您期望的字节顺序。

关于ios - 从原始像素创建图像,但颜色无法根据 RGBA 十六进制值显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34573032/

相关文章:

ios - 调整视频大小并保持 1 :1 scale

iphone - iPhone 中的文字转语音?

android - 是否可以使用 flutter 和 Dart 制作 Vpn 应用程序

iphone - 从iphone sdk中的Plist加载画线

ios - WKWebview运行JavaScript

objective-c - 将 NSDecimalNumber 转换为字符串

ios - Collection View 中的背景问题

swift - UICollectionView swift 3 延迟滚动 UIImage

uiimage - 如何将 UIImage 居中到 UIButton?

ios - 在 UICollectionView 的数组中添加和删除 UIImage