画像データを抜き出して、pictureboxに描画したいのですが。 への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 シン  (社会人) 投稿日時 2011/4/13 19:03:29
shuさん、返答が遅れてすいませんでした。

読み込みたいファイルは、VBに対応していません。
BitmapクラスやBitmapdataクラスの理解に大変時間がかかってしまいましたが、試行錯誤の末、
ご指導どおり、Bitmap.LockBits, Bitmap.UnLockBitsを使って画像を表示することができました。

ありがとうございました。
解決すみとさせていただきます。
投稿者 shu  (社会人) 投稿日時 2011/4/7 22:25:29
読み込むファイルはbmpとかjpegだったりしますか?

VBが対応している形式のふぁいるなら
Dim imgFile as Image = Image.FromFile(ファイル名)
で読み込むことが出来ます。

読み込めない形式だとすると

Bitmap.LockBits, Bitmap.UnLockBitsを使って
各ピクセルデータに読み込むと良いかと思います。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=33131&forum=7
この辺が参考になるかと思います。
投稿者 シン  (社会人) 投稿日時 2011/4/7 19:09:31
画像ファイルをバイナリダンプして勉強しています。 VB2010を使用してます。
データの最初から少しずつ解析して、画像データまでたどり着く事が出来ました。
画像データを抜き出して、pictureboxに描画するのはどのようにしたらよいのでしょうか。

データなどよりすでに分かっている情報は、
 image width : 512  ,  image height : 512  ,   色深度は 16bitのハイカラー
 画像データのアドレス : 0×A38~0×80A38
 バイナリダンプで画像データは、"00 F8"が最初から最後まで並んでいます。
 画像はビューワーで見ると全部黒一面です。


考えてみたコードは以下です。 特にDrawImageのところでエラーが沢山表示されてしまい、対処方法が分かりません。

Dim fs As New System.IO.FileStream(OpenFileDialog.FileName, System.IO.FileMode.Open, System.IO.FileAccess.Read)

Dim buf( fs.Length - 1) As Byte

fs.Read( buf, 0, fs.Length)

Dim g As Graphics = PictureBox1.CreateGraphics

Dim pixelData As New List(Of Integer)

For i As Integer = &HA38 To &H80A38 Step 2
   pixelData.Add(BitConverter.ToUInt16( buf, i ))
Next

g.DrawImage( pixelData, 0, 0, 512, 512)   



また、"00 F8"の(おそらく)16bitの色データから、HTML形式の色のコードを取得するのは、どうしたらよいのでしょうか。


よろしくお願いします。