astel-labs.net

C#などのプログラミングTipsや雑記をつらつらと書くかもしれないブログです。

  • Home
RSS

Xmlファイルにリソースファイルを埋め込む

Posted on 2010年7月21日 by Nymphaea
No CommentsLeave a comment

仕事で作成していたアプリの設定ファイルに画像ファイルを埋め込む要件があったので、そのメモです

 

設定ファイルとして使用している Xml ファイルに操作方法のサムネイルを埋め込み、そのサムネイルをアプリに表示する必要があったため、簡単に作成してみました

 

Xml ファイルはテキストファイルのため、リソースとして埋め込みたいバイナリファイルは一旦文字列に変換する必要があります

そこで、「バイナリファイルを文字列に変換」で思いつくのはメールの添付ファイルだと思います

メールの添付ファイルでは、Base64 というエンコード方法を使うことでバイナリデータから文字列データに変換し、テキストファイルに張り付けられています

Xml でも同じように、Base64 を用いることでバイナリファイルをリソースとして埋め込むことができます

 

バイナリファイルを Base64 でエンコードするためには、まずファイルをバイト配列に読み込む必要があります

バイト配列に読み込んだあとは、System.Convert.ToBase64String() メソッドを使って、文字列に変換します

あとは Xml に書き込むだけです

 

Xml から読み込むときは、Xml ファイルから文字列を取得し、System.Convert.FromBase64String() メソッドを使って、バイト配列に変換します

リソースがイメージファイルの場合は、System.Drawing.ImageConverter.ConvertFrom() メソッドを使えば Image クラスに変換可能です

 

 

今回は実際の変換を行うコードが各2~3行のため、サンプルソースをつけますので直接そちらを参照してください

ImageConverter で変換可能な画像形式のファイルをアプリケーションに Drag&Drop すると xml ファイルが作成されますので、そのあとにアプリを起動すると xml ファイルから画像ファイルを読み込んでアプリに表示します

詳しくはソースを参照してください

※xml で Base64 形式の文字列を利用する際の注意
Base64 形式の文字列を xml ファイルに組み込む場合、「+」と「/」記号が問題を引き起こす可能性があります
この問題を回避するため、これらの記号を「!」や「-」、「.」に置き換えて利用する場合があります
添付のサンプルソースは上記の変換処理を行っていませんので、サンプルソースを流用する際は十分に検討を行ってください

 

バイナリ
・XmlResource.zip

Categories: C#, プログラミング

 

プロセス実行時にパスが通っているかをチェック
WPF – タイマースレッドからWindow内のコントロールを操作

コメントを残す

コメントを投稿するにはログインしてください。

  • 2010年7月
    日 月 火 水 木 金 土
     123
    45678910
    11121314151617
    18192021222324
    25262728293031
    « 6月   8月 »
  • 最近の投稿

    • raspberry pi に nginx をセットアップする
    • VSCode を日本語化する
    • raspberry pi に VSCode をインストールする
    • WindowsのプロダクトIDを取得する
    • SQL Server – money型とdecimal型を併用した金額計算
  • アーカイブ

    • 2020年3月
    • 2016年12月
    • 2014年6月
    • 2014年5月
    • 2013年7月
    • 2012年11月
    • 2012年7月
    • 2012年5月
    • 2012年4月
    • 2011年4月
    • 2011年1月
    • 2010年11月
    • 2010年10月
    • 2010年9月
    • 2010年8月
    • 2010年7月
    • 2010年6月
    • 2010年5月
    • 2010年4月
  • カテゴリー

    • C#
    • jQuery
    • OpenCV
    • raspberry pi
    • SharePoint
    • Silverlight
    • SQL Server
    • WCF
    • WPF
    • プログラミング
    • 未分類
    • 雑記
© astel-labs.net. Proudly Powered by WordPress | Nest Theme by YChong

このブログ内で公開されているソースコードおよびサンプルプログラムに関わるライセンスはすべて修正BSDライセンス(New BSD License)として公開しています。
但し、サンプルプログラムに含まれる外部アセンブリが同様のライセンスとは限りませんので、利用する前に必ずすべてのライセンスの確認を行ってください。