我正在尝试动态显示带有文字的图像。有很多这样的例子,即Write Text On An Image in c#
暂时这是视觉工作室唯一生成空winform页面的东西。 但无论使用何种技术,我都会继续得到相同的结果,所以可能是我的页面存在问题?
我的输出页面显示如下:
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="index.aspx.vb" Inherits="testtext.index" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
</title></head>
<body>
<form method="post" action="./index.aspx" id="form1">
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="G30FF0+ZAHGhkQJeBgR+oRS6OrykggI6KG2KLa2Mf0lna5zKb83yvLWtkQfnBa4AEDqKkttFuBoZ1lWeDcgqUpLSg0hHsyoD0paxcB2U0Js=" />
</div>
<div>
<p><img src="data:image/PNG;Base64, �PNG���
IHDR���5������9堢���sRGB�������gAMA����
�a��� pHYs�������o�d����IDATHKՓ��0�;�9Nvq�lb����D� />
</div>
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="90059987" />
</div></form>
</body>
</html>
我的代码如下所示:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtmstrong textl">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<%Dim cls = New testtext.clsUtil %>
<p><img src="data:image/PNG;Base64, <%cls.MakeImage("Testing") %>" />
</div>
</form>
</body>
</html>
函数.MakeImage结束如下:
'// SET ALIGNMENT
Dim format As StringFormat = New StringFormat
format.LineAlignment = StringAlignment.Center
'// DRAW THE FONT
Dim oMemStream As MemoryStream = New MemoryStream
g.DrawString(Text, oFont, fgBrush, rectF, format)
System.Web.HttpContext.Current.Response.ContentType = "image/png"
img.Save(oMemStream, ImageFormat.Png)
oMemStream.WriteTo(System.Web.HttpContext.Current.Response.OutputStream)
'// CLEAN UP
img.Dispose()
Return Nothing
End Function
函数.MakeImage似乎正常工作返回图像但遗憾的是没有显示图片。
你能看出我做错了吗?
答案 0 :(得分:1)
两件事: 您的输出不是base64编码的,并且您列出的页面输出在src =“...
上没有结束双引号如果您需要有关如何解决的代码,请与我们联系。首先处理base64,以防当前输出搞乱页面输出。
干杯!
补充:
使用Convert.ToBase64String(bytes)
将您的字节编码为Base64字符串。
或者,如果您想继续将字节返回给客户端,请考虑将图像URL放在src=“/images.ashx/testing"
之内,然后设置ASHX处理程序来调用图像生成函数。您可以返回没有编码的字节。