Symfoware

Symfowareについての考察blog

C#でBase64の文字列にした画像をImageに変換して表示する

画像ファイルをBase64エンコードした文字列を作成しました。
これをデコードしてImageオブジェクトにし、画面に張り付けたかったのですが、
やりかたがなかなか見つけられなかったのでメモ書きを残しておきます。


サンプルとしてお借りした画像は、こちらの矢印アイコンです。
無料素材倶楽部



変換の手順は
・Convert.FromBase64StringでBase64の文字列をbyte[]に変換。
・Imageにするためbyte[]からMemoryStreamに変換。
・Image.FromStreamを使用してMemoryStreamからImageに変換。
・出来上がったImageをラベルに張り付けて表示。


ソースは以下のようになりました。

using System;
using System.Windows.Forms;
using System.Collections;
using System.Text;

namespace sample
{
    public class test
    {
        public static void Main(String[] args) {
            Application.Run(new Form1());
        }
    }
    
    class Form1 : Form
    {
        
        public Form1()
        {
            this.Width = 300;
            this.Height = 300;
            this.Text = "サンプル";
            
                        //画像ファイルの内容をbase64文字列に変換したもの
            StringBuilder sb = new StringBuilder();
            sb.Append(@"R0lGODlhEwATANUAAJkAM9KPpbNCaPLe5d6svaMYRsh2kenH0vz4+Z0LP");
            sb.Append(@"LtVePfs8KkoU9earu3S2+K2xc6EnblQc79ff6UfTKETQtyoudSUqffe5v");
            sb.Append(@"nx9O/e3q0yW+fDz////9GNpKATQsp6ldaUrb9ggPTk6evN16UZSrxXeNm");
            sb.Append(@"gs7pTdaglUd61ve/Y4OrK1Z4NPeO5x8x/mf///wAAAAAAAAAAAAAAAAAA");
            sb.Append(@"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUAC8AL");
            sb.Append(@"AAAAAATABMAAAbJwJdwSCwah5hAxAPwRAKYo5BA0QREGFWH4SEcAxMCYh");
            sb.Append(@"BwBQaIRiFQNLEcGAlgPpdgVhQTsvDAaOgEBHMaGA0eUS8BGhwhdAAKHCp");
            sb.Append(@"zIQgobC8CFgOOc5CSAAMQAkIAIgEAHKmqqZIBIwCkCC6oq6qSLguwL6Cn");
            sb.Append(@"nCWRcwEOugIdm46/n6AGo4kaCI2AgpMYDJcYFBV+nIOFFIgvJhMtGNF0I");
            sb.Append(@"RhUekQBCQQcZGYDHBUAl0UpFAwuBwMbHyi6SHmR5AQFABROQBnIsEgQADs=");

            //byte配列に変換
            byte[] imageBytes = System.Convert.FromBase64String(sb.ToString());
            //ImageはStreamなオブジェクトを要求するので、byte配列をMemoryStreamに変換
            System.IO.MemoryStream ms = new System.IO.MemoryStream(imageBytes, 0, imageBytes.Length);
            //MemoryStreamからImageに変換
            System.Drawing.Image image = System.Drawing.Image.FromStream(ms, true);

            //表示用のラベルに貼り付ける
            System.Windows.Forms.Label lbl = new System.Windows.Forms.Label();
            lbl.Bounds = new System.Drawing.Rectangle(0, 0, 100, 100);
            lbl.Image = image;
            this.Controls.Add(lbl);
        }
    }
}





実行すると、以下のような画面が表示されるはずです。


33_001.png



【参考URL】
Convert Image to Base64 String and Base64 String to Image
http://www.dailycoding.com/Posts/convert_image_to_base64_string_and_base64_string_to_image.aspx



関連記事

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

  1. 2011/06/07(火) 21:21:58|
  2. 備忘録
  3. | トラックバック:2
  4. | コメント:0
  5. | 編集
<<DataGridViewのDataSourceに指定できるオブジェクトについての考察 | ホーム | Ubuntu で ファミコン(NES)プログラム その1(開発環境作成とエミュレーター)>>

コメント

コメントの投稿


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

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/786-e48f95dc
この記事にトラックバックする(FC2ブログユーザー)

PHPでTrueTypeフォントを利用する(その2)

HTMLコンテンツの中に、文字列を画像データを埋め込む方法について解説する。この方法を使うことで、1つのPHPプログラムで、テキストと画像を混在するコンテンツを表示することができるようになる。
  1. 2016/01/11(月) 15:11:05 |
  2. ぱふぅ家のホームページ

PHPでTrueTypeフォントを利用する(その2)

PHPでTrueTypeフォントを利用する(その2)【更新】リンク更新
  1. 2016/08/14(日) 07:59:07 |
  2. ぱふぅ家のホームページ