GDutton
GDutton

Reputation: 176

Image not displaying on webpage just shows source

I am trying to dynamically display an image with text on it. There are quite a few examples of this ie Write Text On An Image in c#

For the time being this is the only thing on a visual studio generated empty winform page. but I continue to get the same result regardless of the technique is use, so perhaps its a problem with my page?

My output page displays like this:

 <%@ 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>

My code looks like this:

 <!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>

the function .MakeImage ends as follows:

        '// 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

The function .MakeImage appears to be working correctly returning the image but sadly no picture is displayed.

Can you see what I am doing wrong?

Upvotes: 0

Views: 824

Answers (1)

Chalky
Chalky

Reputation: 1642

two things: your output is not base64 encoded, and your page output you’ve listed doesn’t have a closing double-quote on src=“...

Let me know if you need code on how to resolve. Deal with base64 first, in case the current output is messing up the page output.

Cheers!

Added:

use Convert.ToBase64String(bytes) to encode your bytes into a Base64 string.

Or, if you want to continue to return bytes to the client, consider just putting an image URL in like src=“/images.ashx/testing", then setting up an ASHX handler to call your image-generating function. You can return bytes without encoding.

Upvotes: 1

Related Questions