• ベストアンサー

VB.NET/256色でのBMPファイル保存

いつもお世話になっております。 VS2003/VB.NET/XP Pro SP3 画像処理にアプリケーションを開発していますが、画像処理に関しての知識が乏しくて困っています。 Image.SaveメソッドでBMPファイル保存しようと思っているのですが、フルカラー保存ではなく、256色保存の方法が分かりません。 色々と調べてみたのですが、簡単な方法が見つからず、自前で処理をするしか方法がないのでしょうか? 256色への減色保存を経験がある方からのご教授が頂けると助かります。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

256色なら一度GIFに変換してから BMPにしてみてはいかがでしょう Dim img as Image = Image.FromFile("Sample01.jpg") img.Save("Sample02.gif", Imaging.ImageFormat.Gif) img = Image.FromFile("Sample02.gif") img.Save("Sample03.bmp",Imaging.ImageFormat.Bmp) といった具合で ... 最後の SaveメソッドにImaging.ImageFormat.Bmpを与えないほうがファイルサイズは小さいようです この差異まで調査していません

tatumi4
質問者

お礼

早速、回答を頂き、ありがとうございます。 こんな方法があるとは、思いも付きませんでした。 組んでみたら、ちゃんと256色でビットマップ保存ができました。 実際は、bmpファイルのSave後にimgを編集しますので、imgはPublicで定義してあります。 従って、FromFileでimgを作成するとgifファイルにロックが掛かってしまいますので、2回目のgifファイルの保存でエラーが発生します。 bmpファイルのSave後に、imgをDisposeして、FileStreamでOPENする工夫が必要ですが、非常に有意義な情報でした。 本当にありがとうございました。

関連するQ&A

  • bmp保存時のマッピングについて

    【環境】windowsXP(SP2)、VS2005 CADビューワからbmpファイルを保存しようと思っております。 保存処理自体は出来ているのですが、ある一定の縮尺でビットマップを生成したいと 思うのですが、 「SetWindowExt」や「SetViewportExt」を使用して画像を縮小させて保存する方法という のは使い方が間違っておりますでしょうか? というのも、上記のような関数を使用して画像を小さくし、保存を行うと画像が切れて しまったり(そもそも倍率の問題もあるかと思いますが)、切取ったサイズと実際画像の 間に真っ黒な領域が出てきてしまいます。 ちなみに保存処理自体は、座標をRectに持たせてmetafileを生成し、save関数で行って おります。 上記マッピング関数は表示用なのでしょうか? 質問文が意味分からないかもしれないですが、何かヒントをご教授ください!

  • BMPファイルを作成し保存

    教えてください。 環境:VB6 sp5 winXP sp2 行いたいこと(アウトプット):BMPファイルを作成して、HDDなどに保存したいです。 入力情報(インプット):VBコード内で配列としてピクセル情報を持っています。1000*1000の画像で、変数ImageData(1000000)の中に256階調でデータが入っています。 配列内のデータを元に1枚の画像(bmp形式)を作成これを保存したいです。 わかるかた、教えてください。 サンプルコードなどの場所などを添付していただければ幸いです。 よろしくお願いします。 質問の意味がわからなければ、お知らせください、追記します。

  • VB.netでTIFFファイルの読み込みと保存

    GDI+については全くの初心者です。 フォームにボタンを貼り付け、下記のような処理を書いてみました。 単純にTIFFファイルを読み込んで、別名で保存するという 処理ですが、元のTIFF(test1.tif)と保存後のTIFFファイル(test2.tif)では、ファイル容量が、1/2位に小さくなってしまいます。また、元のファイルはPhotoshop7で読み込めるのですが、保存後のファイルは、読み込めません(ファイルにはこのバージョンのphotoshopと互換性がありませんというエラーメッセージ)。しかし、他のソフト(例えばIE)からはどちらも読み込めます。 これは、一体どういう理由で、どのようにすれば、両方とも全く同じTIFFファイルにすることができるでしょうか。なお、この処理の目的は、単にファイル名の変更をしたいというものではなく、本来は、読み込みと保存の間に、何らかの変換処理を行いたいのです。 よろしくお願いいたします。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim bmp As New Bitmap("c:\test1.tif") bmp.Save("c:\test2.tif", ImageFormat.Tiff) bmp.Dispose() End Sub

  • ビットマップ(.bmp)として保存出来るソフトってあるの?

    ビルダー7を使ってhpを作製しているのですが、その過程でWindowsに付随しているMicrosoft社のペイントというアプリケーションを発見しまし。画像を.bmp形式で保存します。 この.bmp画像は非情に鮮明で画像が綺麗です。但し、飾り文字等々が使えないのが欠点で、どうしてもHPなんかを作製するには力不足です。 【質問1】 文字加工ができて、.bmpで保存出来るソフトってあるのでしょうか? 検索もしましたが今一、マッチするものがありません。 【質問2】 この.bmp画像はぞうして綺麗に鮮明に見えるのでしょうか?.JPGより遥かに劣ります。それでもファイルサイズは、ほとんど変わりがないのですがね~。 宜しくお願いします。

  • 一時ファイル消去してもbmpでしか保存できない…

    サイト上の画像などををjpgで保存したいんですが、 bmpしか選択できないためjpgで保存できません。 自分が記憶している限り、たぶん今までずっと「名前をつけて画像を保存」ではbmpしか選択できませんでした。 他の質問でよく見かける解決方法の一時ファイル、履歴の削除をしてみましたが状況は変わりません。 ほかにどのような原因が考えられるでしょうか? 教えてください、おねがいします。

  • テキストファイルをSQLServerデータベースのbinary型またはvarbinary型に保存したい。

    VB6から『画像ファイル(.bmpと.jpg)』、『テキストファイル(.txt)』を SQLServerデータベースに保存するといったものを作成しようとしています。 フィールドのデータ型は、画像をimage型、テキストをvarbinary型に設定したいと考えておりまして、画像の方は、Byte型に代入後、LoadFromFileメソッドやWriteTextメソッドで保存や取込が出来たのですが、テキストの方が、同じようにByte型に代入までは出来たものの、その先どのようにして保存(取込)をして良いか分かりません。(エラーになってしまいます。) テキストの方もデータ型をimage型にするしか方法はないのでしょうか? 何か良い方法があれば教えていただけませんでしょうか? 宜しくお願いします。

  • VB.netでのPictuerBoxに描写した内容の保存について。

    VB.netでのPictuerBoxに描写した内容の保存について。 PictureBoxに描写した内容を保存してみると、描写した項目事態は正しく保存されているのですが、背景が真っ黒になってしまいますこれは、なぜなのでしょうか? ソースは以下の様な感じです。 Dim bmp As Bitmap Dim g As Graphics bmp = New Bitmap(PictureBox1.Width, PictureBox1.Height) PictureBox1.Image = bmp g = Graphics.FromImage(PictureBox1.Image) g.DrawLine(Pens.AliceBlue, 0, 10, 20, 10) PictureBox1.Refresh() PictureBox1.Image.Save("test.jpg", System.Drawing.Imaging.ImageFormat.Jpeg) どなたかわかる方よろしくお願いいたします。

  • Wordからペイントに画像をコピペすると変色する

    Word2002文書に貼り付けられた画像をコピーして、ペイントに貼り付けると、なぜか画像が減色します。かなりおかしな色になります。 オートシェイプなどでグラデーションを使っている時も減色するので、やはり色の数が関係しているとは思います。しかし、Webページなどのフルカラー写真画像をペイントにコピペしても、まるで減色されせん。なので、jpgやBMPだからどうこうという事ではなさそうです。 ちなみに、Word文章を印刷すれば普通にフルカラーで印刷されます。 一体なぜでしょうか? よろしくお願いします。

  • VB.NETでのPictureBoxによる画像保存について

    またお世話になります。 VB.NETでプログラムでPictureBoxに絵を描かせているのですが、そこまでは表示させることができました。このできた画像をBitmapなりjpegなりに保存させて、ほかの画像ビューワ等でも見れる形にしたいのですがうまくいきません。 ちなみに今はこのように書いて、 Dim gra1 As Graphics = PictureBox1.CreateGraphics FileOpen(2, myfile2, OpenMode.Output) (絵を描かせるプログラム) PictureBox1.Image.Save(myfile2, System.Drawing.Imaging.ImageFormat.Bmp) FileClose(2) としてまわしたところ、 System.Runtime.InteropServices.ExternalException' のハンドルされていない例外が system.drawing.dll で発生しました。 追加情報 : GDI+ で一般的なエラーが発生しました。 といわれました。 どなたかご教授いただけたらお願いしますm(__)m

  • VB2010でWEB画像の保存方法

    VB2010でWEB画像の保存方法 こんにちは。どうしても解決出来ない為質問させて下さい。 WEB画像を保存したいのですが、対象となる画像はPHPによって生成された画像なのです。 単純にWebClient.DownloadFile()メソッドを使ってみたのですが無理でした。 「右クリック→画像を保存」で保存出来るのですが… どなたかご存知の方がいらっしゃいましたらご教授願います。

専門家に質問してみよう