すべて!UIImageをSwiftのUInt8配列に変換する
私はこれについて多くの研究をしてきました。私はいくつかの異なるソリューションを自分のプロジェクトに統合しましたが、どれも動作していないようです。私の現在の解決策はthis threadから借りています。
私は私のコードを実行すると、しかし、二つのことが起こる:
- を画素配列は、(0の完全な)初期化されたが、未実装のまま
私は2つのエラーを取得:
CGBitmapContextCreate:サポートされていないがパラメータの組み合わせ:詳細を見るにはCGBITMAP_CONTEXT_LOG_ERRORS環境変数を設定してください。
と
CGContextDrawImage: invalid context 0x0. If you want to see the backtrace, please set
私はこのCGBitmapのもののすべてがどのように機能するかを理解するに新たなんだと
init?(fromImage image: UIImage!) {
let imageRef = image!.CGImage
self.width = CGImageGetWidth(imageRef)
self.height = CGImageGetHeight(imageRef)
let colorspace = CGColorSpaceCreateDeviceRGB()
let bytesPerRow = (4 * width);
let bitsPerComponent :UInt = 8
let pixels = UnsafeMutablePointer<UInt8>(malloc(width*height*4))
var context = CGBitmapContextCreate(pixels, width, height, Int(bitsPerComponent), bytesPerRow, colorspace, 0);
CGContextDrawImage(context, CGRectMake(0, 0, CGFloat(width), CGFloat(height)), imageRef)
任意のポインタは、大いに役立つでしょう:ここで私は私のImageクラスのために呼んでいる私の現在構築された機能です。
ありがとうございます!
最初のステップは、暗黙のうちにアンラップされたものを削除し、アンラップされた 'Optional'を強制することです。彼らはただランタイムのクラッシュとエラーを求めています。 'Optional'をチェックし、それぞれのケースを適切に処理するほうがずっと良いです。 – ColGraff
素晴らしい点。私はすぐにそれに着きます。 –