display new bitmap

T

Tina

I'm in a button clicked event on mainpage.aspx. I want to display a new
webpage that has just my image, which is a jpg. I want the page to be a
..jpg not an aspx so that it will be easy for the user to save to disk.

How can I do this?
Thanks,
T
 
N

Natty Gur

Hi,

change the ContentType and write the jpeg.
Response.ContentType = "image/jepg"
...
oBmp = New Bitmap(strPath)
...
oBmp.Save(Response.OutputStream,
System.Drawing.Imaging.ImageFormat.Jpeg)

Natty Gur, CTO
Dao2Com Ltd.
34th Elkalay st. Raanana
Israel , 43000
Phone Numbers:
Office: +972-(0)9-7740261
Fax: +972-(0)9-7740261
Mobile: +972-(0)58-888377
 
T

Tina

there are two pages involved, webform1.aspx and HiRes.aspx. In
Webform1.aspx I write a .jpg to the root of d: and do :
Server.Transfer("HiRes.aspx")

HiRes.aspx is as follows:
<%@ Page Language="vb" ContentType="image/jpeg" AutoEventWireup="false"
Codebehind="HiRes.aspx.vb" Inherits="DBAPhotoQuery.HiRes"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>test</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
<meta name=vs_defaultClientScript content="JavaScript">
<meta name=vs_targetSchema
content="http://schemas.microsoft.com/intellisense/ie5">
</head>
<body MS_POSITIONING="GridLayout">

<form id="Form1" target="_blank" method="post" runat="server">

</form>

</body>
</html>

and the CodeBehind for hires.aspx is as follows:

Imports System.Drawing.Imaging
Public Class HiRes
Inherits System.Web.UI.Page

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Response.Clear()
Dim oBmp As Bitmap
oBmp = New Bitmap("d:\bigpic.jpg")
oBmp.Save(Response.OutputStream, imageformat.jpeg)
Response.End()
End Sub
End Class

What happens is that the picture does indeed get written but to
webform1.aspx. What was in webform1.aspx is completely replaced by just the
image. You might notice that I put Target="_blank" in an attempt to get it
to display a new i.e. page.
Thanks,
T
 
N

Natty Gur

You dont set the content header :

Response.ContentType = "image/jepg"


Natty Gur, CTO
Dao2Com Ltd.
34th Elkalay st. Raanana
Israel , 43000
Phone Numbers:
Office: +972-(0)9-7740261
Fax: +972-(0)9-7740261
Mobile: +972-(0)58-888377
 
J

Jerry III

Tina,

this is completely wrong. You're trying to send a jpeg image from Hires.aspx
yet you're sending HTML tags to the response. If you want to do that there
should be nothing (and I mean nothing) in the page except page directives
and server side script. In your case (using code behind) only the single
Page directive should be in your aspx file, like this:

<%@ Page Language="vb" ContentType="image/jpeg" AutoEventWireup="false"
Codebehind="HiRes.aspx.vb" Inherits="DBAPhotoQuery.HiRes"%>

Anything else (such as your HTML in it) will be sent down to the client
effectively breaking your jpeg image data. Of course a cleaner way is to
send it through a render function instead of in OnLoad event but from the
functionally point of view it doesn't matter.

BTW why do you create a file on your disk drive and then send it? Wouldn't
it be easier to send it directly without writing it to the drive?

Jerry
 
T

Tina

Jerry,
The problem is:
First, the desired solution is...
The user is interacting with Webform1.aspx. A button on that form should
bring up a new browser window where the url is a .jpg and the image is
displayed in that new browser window. Because the url is a .jpg, the user
can easily save it to his local disk. He can then continue interacting with
webform1, bringing up new pictures and saving them as desired.

What is happening is...
when the user hit's the button on Webform1, everything on webform1 is wiped
out and replaced by the hi res picture. The url still says
www.mysite.com/myApp/Webform1.aspx. This is all bad because (1) Webform1
got wiped out and user needs to back arrow to continue and (2) the user
can't save the image because the url is not a .jpg.

I think this, coupled with my description below pretty much describes this
problem I am having.
Thanks for bearing with me so far,
T
 
J

Jerry III

You need to set the target attribute to _blank on your form to open the
image in a new window. Like this:

<form target="_blank"...>...</form>

Or you can use a link (<a>) with the same attribute.

If I understand you correctly you don't have a problem displaying the image,
right? You just want it to open in a new window?

Jerry
 
V

vMike

Maybe this will help. I set the NavigateUrl in code to a aspx file which
streams the picture, but this bit puts it in a new window.

<asp:HyperLink id="zoom1" name="vlarge"

onclick="vlarge1=window.open
('','vlarge','resizable=no,scrollbars=no,status=no,toolbar=no,height=450,wid
th=575,left=50,top=100');vlarge1.focus();return true;"

onmouseover="window.status='Click here for full sized picture.';return
true"
onmouseout="window.status=''; return true;"
text="(click here for full size)"
target="vlarge" tooltip = "Click here for full sized picture."
runat="server"/>
 
J

Jerry III

Just use the target attribute. This approach won't work if javascript is
off, target attribute works always. Unless you want to control the windows
appearance but it's just nicer to leave that up to the user.
 
T

Tina

Again, as you can see in my example, I have target="_blank" and it does not
have any effect.
T
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,020
Latest member
GenesisGai

Latest Threads

Top