私の要件は、pngファイルを1ビットのモノクロビットマップファイルに変換することです。UIImageオブジェクトがあり、それを1ビットのモノクロbmpとして表現したいと思います。
1)これを行う簡単な方法はありますか?私はこれを最初から行う準備ができていますが、既製のソリューションが利用できない場合に限ります。CoreグラフィックスとCoreイメージフレームワークを一瞥しましたが、関連するものは見つかりませんでした。または、これを実装する利用可能なオープンソースプロジェクトはありますか?
2)これを手動で行う必要がある場合、ピクセルのビット表現を保存することに疑問があります。ここでbmpファイル形式を見つけました。
- ファイル形式に従って、ビットマップヘッダーを作成します。すべてのbmpバージョン(1ビット、8ビットなど)が同じヘッダー形式であるかどうかはわかりません。その情報が見つかりませんでした。
png画像のすべてのピクセルを繰り返し処理し、赤、緑、青(RGB)のバイト値を取得します。これらの3つの値を計算して、1ビット表現を取得します。たとえば、(擬似コード)のようなもの
for(each pixel){ average = (pixel.RValue + pixel.GValue + pixel.BValue)/3; if(average > 0x7f) //127 bit = 1; else bit = 0; //bit has monochrome representation for this pixel, but how to store it? }
- これらのビットを、作成済みのbmpヘッダーに追加します。
png画像のすべてのピクセルを反復処理する方法を知っているので、そのピクセルのモノクロ表現を取得できます。まだやっていなくても、ヘッダー部分はできると思います。しかし、私はビットをどのように扱うのか分かりません。何か助けはありますか?