fc2ブログ

VB2008でBitmapオブジェクトを直接Bitmapファイルとして出力させるコード

近の私は、
私の作成したソフトを、

「wine1.6.2」+Monoランタイム環境(2.0)に
対応させる
ことに
凝っている訳ですが。



その中で。

従前の記事の通り、出力できる画像が、
png形式しか、選択できない。
と言う事実を、知りました。
http://oyk3865b.blog13.fc2.com/blog-entry-1607.html



これを、どうにかできないか?


と、考えた結果。
以前の記事の通り、
bmp形式に関しては、
内部バイナリ構造を、調べているので。
http://oyk3865b.blog13.fc2.com/blog-entry-1394.html



,,ノ ,,        : : : : //  //|   /    / /  /   //            /
 ̄ /       : : : ヽニニ〃 |   .|   ー/ ̄| Tーーー--ノ/         /Λ
 . /        : : : : : : : ノ〈⌒V   i    r=≠V===《        l ヽ    // | だったら
. ./        : : : : ,, -  |  |   {   / 《iin  C  ヽ          ̄ ̄V   }  自力で
. レ|  λ ノ^| : : : :/    .|  ハ  ヽ  | 乂ヽノ::ツ          > \/ \ } バイナリを
.ノ  ノ  V  l : : : |     i   /   λ  |   ̄⌒ ヽ            , >,、  \
-''       7{⌒.V|     ヽ  ヽハ .{ \|            〃    乂iinCヽ  .| 叩くしか
       ノ ヘ . .|      |こ     ゝ∂                ̄ V::ツ \ ./ ないじゃない!!
      ノ  ヘ  {       ヽ┐_,,-.,/      _             \  ./ /
     「    ヘ  ヘ     /   --  \   /--  ̄ ̄ ヽ         ノ / ,,ノ,,,――  、
     i     ヘ   \  / イ^ヽ  /ヽ  \   ̄       ヨ        /  ̄/       ヽ
    ヘ      ヘ   ,,-/  人  ,, ― 、ノヽ  }                  // /         ヘ
     ヘ      ヘ/  { .|  /;;;;;;;;;;;;;;;;;;__ノ|  i个               イ             ヘ
-―-- 、 >     /  .{ .| ̄ ヽ;;;;;;;;;;;;;;ノ  /  i  ヽ --ー―――――ー   ⌒  ヽ     ,, -―-- ,,
   ,,--―こ>,, ―.i   乂 ゝ/.ゝーー V   /.}  } r--ー'' ̄ ̄ ̄/          V^ ̄      ノ
  /   /    :::::| .,-、r/,\  V_|_,,ヽ/ /,/―「V_,,     /             ヽ      /
. /    {     ::::i .l  .|////ヽ,,      ///./ニ/ /--  ヽ /    ,, /           「 ̄  <,,
/    .i       /  λ///////ー ''/////,|< T ヾ    /-



※AAは、http://yaruo.b4t.jp/index.php?id=HukuTemp/%E9%AD%94%E6%B3%95%E5%B0%91%E5%A5%B3%E3%81%BE%E3%81%A9%E3%81%8B%E2%98%86%E3%83%9E%E3%82%AE%E3%82%AB/%E5%B7%B4%E3%83%9E%E3%83%9F/%E5%B7%B4%E3%83%9E%E3%83%9F03%EF%BC%88%E6%88%A6%E9%97%98%EF%BC%89.mlt より引用しました。


と、Bitmapファイル内のバイナリ構造から
自力で一から作ろう。という結論に至りました。



そして。書いた。

VB2008でBitmapオブジェクトを
直接Bitmapファイルとして出力させるコードが、

以下の通りでございます。


また、
以下のコードは、

直接、「新規Windowsフォームアプリケーション」でのFormに、
そのまま、貼り付けるだけで、
動作するようにしてありますが。
snapshot002939043 - コピー

あくまで、公開用に必要部分だけに留め
端折ったコードですので、

不十分な部分が多々ございますので、
遂次、ご自身で、修正いただけると幸いです。










上記のコードの動作確認の資料として。

上記のコードでは、コメントアウトしている。
”通常”の方法で保存した、
比較用のBitmap画像との、バイナリ比較を、

比較用ソフト『Stirling』などを利用させてもらって
http://www.vector.co.jp/soft/dl/win95/util/se079072.html


比較した結果を、示します。
2014_10_26_庭_28

2014_10_26_庭_29_convert[000]
(※↑この画像は、クリックすると大きくなります。)

そして、ヘッダー内の
・BiSizeImage
・BiXPelsPerMeter
・BiYPelsPerMeter

以上、3点が、
バイナリを実際に叩いて作成したものと、
”通常の方法”で作成したもので、違いがありましたが、

画像本体部分の内容などには相違がなく
どうやら、今のところは、
画像の表示に問題はなさそうだと感じております。



ただし。

今回の目的である。
Linux上の、「wine1.6.2」+Monoランタイム環境(2.0)であると、
2014_10_19_monoランタイム対策用_38
■バイナリを実際に叩いて作成したものは表示され、
(直上の画像、右上の窓。)
■”通常の方法”で作成したものは、表示されない。
(直上の画像、左下の窓。)
と、動作に大きな違いが見られました。

因って。

以上のコードを用いることで
「wine1.6.2」+Monoランタイム環境(2.0)で、
png以外に、bmp形式の画像も、
出力することが出来る事になり、目的を達成できました。


以上
大変、大まかで不十分かつ、長ったるいコードですが。
何かのお役に立てれば、幸いでございます。

ありがとうございました。


スポンサーサイト



テーマ : プログラミング - ジャンル : コンピュータ

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック


この記事にトラックバックする(FC2ブログユーザー) URL

プロフィール





最新記事
最新コメント
最新トラックバック



月別アーカイブ
カテゴリ