0

私の要件は、pngファイルを1ビットのモノクロビットマップファイルに変換することです。UIImageオブジェクトがあり、それを1ビットのモノクロbmpとして表現したいと思います。

1)これを行う簡単な方法はありますか?私はこれを最初から行う準備ができていますが、既製のソリューションが利用できない場合に限ります。CoreグラフィックスとCoreイメージフレームワークを一瞥しましたが、関連するものは見つかりませんでした。または、これを実装する利用可能なオープンソースプロジェクトはありますか?

2)これを手動で行う必要がある場合、ピクセルのビット表現を保存することに疑問があります。ここでbmpファイル形式を見つけました。

  1. ファイル形式に従って、ビットマップヘッダーを作成します。すべてのbmpバージョン(1ビット、8ビットなど)が同じヘッダー形式であるかどうかはわかりません。その情報が見つかりませんでした。
  2. 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?
    }
    
  3. これらのビットを、作成済みのbmpヘッダーに追加します。

png画像のすべてのピクセルを反復処理する方法を知っているので、そのピクセルのモノクロ表現を取得できます。まだやっていなくても、ヘッダー部分はできると思います。しかし、私はビットをどのように扱うのか分かりません。何か助けはありますか?

4

1 に答える 1

1

これを行う簡単な方法はありますか?私はこれを最初から行う準備ができていますが、既製のソリューションが利用できない場合に限ります。

iOSでBMPを作成するための既製のソリューションがあるかどうかはわかりませんが、BMPは、最初から作成するのが比較的簡単な数少ない形式の1つであると言えます。

ファイル形式に従って、ビットマップヘッダーを作成します。すべてのbmpバージョン(1ビット、8ビットなど)が同じヘッダー形式であるかどうかはわかりません。その情報が見つかりませんでした。

ウィキペディアの記事は非常に有益です。すべてのBMPタイプは基本的に同じヘッダー形式であり、ビット深度はオフセットで保存されます1Ch

png画像のすべてのピクセルを繰り返し処理し、赤、緑、青(RGB)のバイト値を取得します。これらの3つの値を計算して、1ビット表現を取得します。例...すでに作成したbmpヘッダーにこれらのビットを追加します。

正しく聞こえます。行にはいくつかのパディングが必要になる可能性があることを忘れないでください

しかし、私はビットをどのように扱うのか分かりません

8ビットのグループを1バイトにパックするだけです。

于 2013-02-27T16:49:08.707 に答える