仕事で作成していたアプリの設定ファイルに画像ファイルを埋め込む要件があったので、そのメモです
設定ファイルとして使用している 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
コメントを残す
コメントを投稿するにはログインしてください。