2011-11-23 87 views
0

我正在ASP.NET中執行某種目錄,其中每個人都顯示電話號碼。 我不想在我的網站上收穫,所以而不是寫123-123-1234我希望它從圖像呈現。如何在沒有圖像文件的情況下將文本轉換爲圖像

另一個限制是我不想保存任何TMP圖像文件。我希望服務器將其發送回客戶端進行重新繪製。那是可行的嗎?通過JS?

謝謝!

+0

你看着畫布HTML 5? –

+0

請參閱(例如):http://stackoverflow.com/questions/887985/create-png-image-with-c-sharp-httphandler-webservice –

+0

您希望服務器發送客戶端變成圖像的文本? – Paul

回答

1

我不會用JavaScript來做到這一點。如果他們可以刮你的頁面,他們可以刮你的代碼var phone = '123-123-1234';。但是,如何做到這一點on the web並沒有例子。大多數示例將圖像直接寫入客戶端而不創建中間文件。

1

創建一個傳回圖像的通用處理程序。傳遞一個標識符,允許您從數據庫中查找電話號碼。您可以從新的Bitmap的圖形上調用Graphics.DrawString(phoneNumber, ...),並將其保存到Response.OutputStream

事情是這樣的:

public class PhoneNumber : IHttpHandler 
{ 
    public void ProcessRequest(HttpContext context) 
    { 
     var id = context.Request["id"]; 
     var phoneNumber = ""; 
     if (!string.IsNullOrEmpty(id)) 
     { 
      phoneNumber = DataAccessor.GetPhoneNumber(id); 
     } 
     context.Response.ContentType = "image/png"; 
     var bmp = new Bitmap(100, 20); 
     var gfx = Graphics.FromImage(bmp); 
     gfx.FillRectangle(Brushes.White, 0, 0, 100, 20); 
     gfx.DrawString(phoneNumber, new Font("Arial", 10), Brushes.Black, 0, 0); 
     bmp.Save(context.Response.OutputStream, ImageFormat.Png); 
    } 
    public bool IsReusable { get { return false; } } 
} 

這樣稱呼它:

<img src="PhoneNumber.ashx?id=<%# Eval("PhoneNumberId") %>" /> 
+0

我只是寫了同樣的答案,但你吞噬它真的很好:) – Goran