0

画面上のすべてのピクセルを特定の色に設定できるようにしたい。私が使用している方法は、生データ配列にすべてのピクセルを作成してから、UIImageView に入れた UIImage を作成することです。私はコードをこれに切り詰めましたが、まだ問題が表示されています。画像を作成して愚かなことをしたと思いますが、すべてのドキュメントを読んだので、すべて問題ないようです:

ピクセルデータを保存するための構造体

public struct PixelData {
    var a: UInt8 = 255
    var r: UInt8
    var g: UInt8
    var b: UInt8
}

配列の左半分を赤、右半分を黒で塗りつぶす

func halfRood()->[PixelData] {
        var data: [PixelData] = []

        for(var i = 0; i < Int(Constants.Resolution.x); i++) {
            for(var j = 0; j < Int(Constants.Resolution.y); j++) {
                if(j < Int(Constants.Resolution.y/2)) {
                    data.append(PixelData(a: 255, r: 255, g: 0, b: 0))
                } else {
                    data.append(PixelData(a: 255, r: 0, g: 0, b: 0))
                }

            }
        }

        return data
    }

ビットマップから画像を返す

func imageFromARGB32Bitmap(pixels: [PixelData], width: UInt, height: UInt) -> UIImage? {
    let bitsPerComponent: UInt = 8
    let bitsPerPixel: UInt = 32
    let rgbColorSpace = CGColorSpaceCreateDeviceRGB()
    let bitmapInfo:CGBitmapInfo = CGBitmapInfo(CGImageAlphaInfo.PremultipliedFirst.rawValue)

    var data = pixels
    let providerRef = CGDataProviderCreateWithCFData(NSData(bytes: &data, length: data.count * sizeof(PixelData)))
    let providerRefthing: CGDataProvider = providerRef
    let cgImage = CGImageCreate(width, height, bitsPerComponent, bitsPerPixel, width * UInt(sizeof(PixelData)), rgbColorSpace, bitmapInfo, providerRef, nil, true, kCGRenderingIntentDefault)
    let cgiimagething: CGImage = cgImage
    return UIImage(CGImage: cgImage)
}

そして最後に updateUI() 関数を設定します

func updateUI() {
        let data = halfRood()
        if let image = imageFromARGB32Bitmap(data, width: UInt(Constants.Resolution.x), height: UInt(Constants.Resolution.y)) {
            imageView?.image = image
        }
    }

次のようなものを期待していましたが、出力は次の図のようになります。黒半分】

現在の状況

4

1 に答える 1