[ASP.NET][C#][轉]數字轉為圖片

本文轉自IT邦的一則問題:http://ithelp.ithome.com.tw/question/10129293

如有侵犯到權益,請通知,會馬上刪除。

改成圖片的原因的目的就是政府不讓外界抓到這些統計資料,
進而將這些資料去讓房仲業做出另一個介面提供查詢
當然這邊文章也不是要討論Open Data的相關議題
只因為以前有做過類似的需求,所以來介紹一下數字轉圖片的功能
基本上此功能在C#可以用Graphics這個類別去繪製出來,

http://msdn.microsoft.com/zh-tw/library/system.drawing.graphics.aspx

我將他寫成一個方法來完成此需求:

private string TransIntToImage(int Number)
   {
       string StrNum = Number.ToString();
       Bitmap Bmp = new Bitmap(StrNum.Length * 80, 25);  //建立實體圖檔並設定大小
       Graphics Gpi = Graphics.FromImage(Bmp);
       MemoryStream stream = new MemoryStream();

       Gpi.Clear(Color.White);    //設定背景顏色
       Font _font = new Font("Verdana", 9, FontStyle.Bold); //設定字型大小.樣式
       for (int i = 0; i < StrNum.Length; i++)
       {
           Int32 j = i * 18;
           Gpi.DrawString(StrNum[i].ToString(), _font, Brushes.Blue, j, 0);
       }
       Bmp.Save(stream, ImageFormat.Jpeg);
       byte[] byteArray = stream.GetBuffer(); //將Bitmap轉為Byte[]
       return Convert.ToBase64String(byteArray); //轉為Base64sting
}

回傳的是一個Base64字串,目的是直接顯示在網頁上,不再另存圖片了: 使用方法如下:

protected void Page_Load(object sender, EventArgs e)
{
    string temp = TransIntToImage(51515);
    img_Number.ImageUrl = "data:image/jpeg;base64," + temp; //直接在網頁上顯示圖片
}