tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルWindows3.x形式でのBMPファイルの保存
記事No5502
投稿日: 2007/05/16(Wed) 16:59
投稿者どいっぺ
開発環境:VB.Net2005ExpressEdition使用です。
今現在、読み込んだBMPデータの一部を切り出して一枚一枚のBMPを作成するツールを作っております。

切り出して保存する所までは完成したのですが、はき出されたデータのファイル形式が
Windows or OS/2 Bitmap(BMP)になります。
その他のツールとの兼ね合いもあり、はき出されるデータはWindows3.x ビットマップ(BMP)
にする必要があります。

なにかはき出すBMPファイルの形式を指定する方法などあるのでしょうか?
よろしくお願いいたします。

            Dim x As Integer
            For x = 0 To PictureBox1.Image.Width - 48
                Dim filename As String
                Dim width As Integer = 48
                Dim height As Integer = 16

                Dim y As Integer = 0
                Dim bmp1 As Bitmap = New Bitmap(strSrcBmpfile)
                Dim bmp2 As Bitmap = New Bitmap(48, 16)

                filename = Me.TextBox1.Text & Format(x + 1, "0000") & "(1).bmp"

                filename = Me.lbl_foldername.Text & "\" & filename

                Dim gr As Graphics = Graphics.FromImage(bmp2)
                gr.DrawImage(bmp1, 0, 0, New Rectangle(x, y, width, height), GraphicsUnit.Pixel)
                PictureBox2.Image = bmp2
                PictureBox2.Image.Save(filename, System.Drawing.Imaging.ImageFormat.Bmp)
                bmp1.Dispose()
                gr.Dispose()

            Next

[ツリー表示へ]
タイトルRe: Windows3.x形式でのBMPファイルの保存
記事No5511
投稿日: 2007/05/17(Thu) 13:29
投稿者K.J.K.
> 切り出して保存する所までは完成したのですが、はき出されたデータのファイル形式が
> Windows or OS/2 Bitmap(BMP)になります。

本当にそうなりますか? バイナリエディタなどで14byte目の値を調べると、
12になっている、ということでしょうか? Ver.3なら40、Ver.4なら108、
Ver.5ならば124になるとは思いますが、確かVer.3しか出力しなかった
ような。

ちなみに、私の環境では再現していません。Ver.3のみです。

[ツリー表示へ]
タイトルRe^2: Windows3.x形式でのBMPファイルの保存
記事No5512
投稿日: 2007/05/17(Thu) 14:48
投稿者どいっぺ
K.J.K. さん

返答ありがとうございます。
ファイル形式はプロパティーの概要(Windows2000Pro)で見た物です。
ファイルのバイナリーを解析したところ、 K.J.K.さんが指摘されている
Ver.3でした。

バイナリーで確認したところ、ヘッダー情報もパレット情報もWindows形式で保存されているのに
Windows2000ProでOS/2と表示されるみたいです。
旧のWindows2000では最新のBMPファイル(αチャンネル)など プロパティーの表示は対応していないみたいです。

その他のソフトで読み込めない問題についてはそのソフトの方で対応しようと思います。
ありがとうございました。

[ツリー表示へ]