【问题标题】:how to convert text to image on the fly without image file如何在没有图像文件的情况下即时将文本转换为图像
【发布时间】:2011-11-23 20:47:17
【问题描述】:

我正在 ASP.NET 中创建某种目录,每个人都在其中显示电话号码。 我不想在我的网站上收获,所以我不想写 123-123-1234,而是希望它从图像中呈现出来。

另一个限制是我不想保存任何 TMP 图像文件。我希望服务器将其发送回客户端进行重绘。那是可行的吗?通过JS?

谢谢!

【问题讨论】:

  • 你用 HTML 5 研究过画布吗?
  • 你希望服务器发送文本,客户端变成图像?
  • 没有。我希望它们之间的通信仅通过图像。但我不希望服务器创建图像

标签: javascript asp.net


【解决方案1】:

我不会用 JavaScript 来做这件事。如果他们可以抓取您的页面,他们可以抓取您的 JavaScript 代码,上面写着var phone = '123-123-1234';。但是不乏关于如何做到这一点的示例on the web。大多数示例直接将图像写入客户端而不创建中间文件。

【讨论】:

    【解决方案2】:

    创建一个流回图像的通用处理程序。向它传递一个标识符,使您可以从数据库中查找电话号码。您可以从新的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") %>" />
    

    【讨论】:

    • 我只是写了同样的答案,但你解释得很好:)
    猜你喜欢
    • 1970-01-01
    • 2019-11-03
    • 1970-01-01
    • 2019-02-05
    • 1970-01-01
    • 2016-03-14
    • 1970-01-01
    • 1970-01-01
    • 2019-04-17
    相关资源
    最近更新 更多