2011-02-04 33 views
0

イメージ(フォーマットは質問の一部です)を与えたら、それを自分の「フォーマット」に変換できます。私のフォーマットは、例えば、その特定のピクセルが「オン」であるかどうかを示す時間画像のサイズをカバーするブール値の単純なX行Y配列の配列です。色は関係ありません。画像フォーマット(BMP、JPG、GIFなど)についてはわかりませんので、画像を読み込んでそのピクセル状態を「マップ」することは可能です。"画像"/"画像"フォーマットを自分自身に変換する

特定のピクセルが「オン」になっているかどうかを画像で判断するのが難しいかもしれないと思います。これは私が作成しているプログラムの特定の部分の一部を形成するので、ユーザーは単色で特定の範囲の画像のみを作成できるようにすることができます。

私が達成しようとしているのは、ユーザーが任意のイメージプログラム(例えばmspaint)を使用して画像を描画し、それを保存してからアプリケーションにインポートすることです。後のポイント。

グラフィック形式のいずれかでこれを行うことができますか?私は私が何のために十分な情報を提供したことを願っています。私は非常に基本的な例を提供します。

例:作成された画像は20,10で、ユーザーはポイント0,0 - > 6,0(つまり7ピクセル幅)から直線を描いています。彼らはそれをBMP、JPGとして保存しました。その画像を開いて、それをスキャンして基本的に特定のピクセルが描画されているかどうかを判断したいと思います。したがって、ピクセル0,0,0,0,0,0,0,0,0,0,0,0は「オン」になり、他のすべてのピクセルはオフになります。特定のタイプとして保存するように強制しなければならない場合、私はそれに満足しています。

私は開発言語としてDelphiを使用しています。箱から出して

おかげ

ジェイソン

+0

オンスクリーンとオフグラフィックは、基本的にモノクロのビットマップです。あなたがしようとしていることは、マスクを作成することです。 – GrandmasterB

答えて

3

あなたは、Delphi(BMP、JPG、PNG、私はあまりにも、これらの日だと思うGIF)と、いくつかの異なる画像フォーマットを読み込むことができます。その後、他のイメージタイプをサポートするために利用可能な第三者のオプションがたくさんあります。

イメージをメモリにロードしたら、最も簡単なことは、それをTビットマップに変換することです。これを行うにはいくつかの方法があります。しかし、ピクセルを混乱させたいので、Tbitmapを作成し、ピクセルフォーマットを24ビットに設定すると、読み込んだイメージをTbitmapのCanvasに描画します。

bmp.Width:=sourecimage.Width; 
bmp.Height:=sourceimage.Height; 
bmp.PixelFormat:=pf24bit; 
bmp.Canvas.Draw(0,0,sourceimage); 

これは、これを行うための最も効率的な方法ではないかもしれないが、それが知られている形式のメモリであなたのイメージを取得し、あなただけではなく、異なるフォーマットをコードするよりも、それを使用して約1の方法を、心配する必要はあり。 - (非常に遅いが、理解しやすいです)ピクセル財産 - (高速ですが、もう少し複雑に使用する)スキャンラインプロパティ

あなたは今、画像情報にアクセスするための2つのオプションを持っています両方を使用すると、イメージ内のすべてのピクセルを繰り返し処理し、その色を決定できます。

ピクセルを取得したら、ピクセルを「オン」に定義するものと、ピクセルを「オフ」に定義するものを検討する必要があります。そのためには、 "OFF"ピクセル(たとえば、白 - $ FFFFFF)を表すために色を選択する必要があると思います。そのピクセルがその色ならばオフ、そうでない場合はオンです。

あなたが本当に達成しようとしていることをあまり知らないと、もうこれ以上行くことは難しいです。パフォーマンスやシンプルさが必要ですか?独自の構造が本当に必要なのか、ビットマップデータ(事実上2次元配列)で十分ですか?

重要なメモです。 JPGファイルを使用するのは良いことではありません。 JPGはおおよその色を使用します。画像が圧縮/伸張された後にどの色が読み込まれるかを保証できる方法はありません。あなたの「オフ」ピクセルは「ほぼ白」であるかもしれませんが、「正確に白」であるという保証はありません。

+0

ありがとうございます。私は、あなたが提案したものと一緒に行きます。スピードは要因ではありません。フォーマットとしてBMPを選択することは行く方法です。私はそれを試して、あなたの答えに基づいて動作させることができるかどうかを見ていきます。彼らは、元のBMPを1つの色でしか作成しないので、それ以外の色があると仮定することができます - 選択した色を知る方法を決めると:) - おそらく最初の色です。ありがとう。私はそれを答えとしてマークします。 – Jason

関連する問題