By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
459,636 Members | 1,693 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 459,636 IT Pros & Developers. It's quick & easy.

Response.ContentType = "image/jpeg" causes Page_Load Event twice

P: n/a
I've searched everywhere for a solution
Microsoft .NET Framework V 2.0.50727
AutoEventWireup="false"

image2.aspx resize an image on the fly but Page_Load is triggered
twice:

Any suggestion?

Here is the code behind:

---------------------------------------------------------
Imports System.Data
Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.Drawing.Text
Imports System.Drawing.Drawing2D
Partial Class ridimensiona_immagine_al_volo_image2
Inherits System.Web.UI.Page

'Prende un mimeType e ne restituisce il codec corrispondente.
Function GetEncoder(ByVal mimeType As String) As ImageCodecInfo

Dim codecs() As ImageCodecInfo =
ImageCodecInfo.GetImageEncoders() ' elenco codecs
Dim returnValue As ImageCodecInfo = Nothing ' codec da
resituire

'Ciclo sui codecs e verifico quale corrisponde al mimeType
passato
For Each codec As ImageCodecInfo In codecs
If codec.MimeType = mimeType Then
returnValue = codec
End If
Next

Return returnValue

End Function
Function Get_Thumbnail(ByVal Source_Img As System.Drawing.Image,
ByVal height As Integer, ByVal width As Integer) As
System.Drawing.Image

Dim Orginal_Width As Integer
Dim Orginal_Height As Integer
Dim Aspect_ratio As Integer
Orginal_Width = Source_Img.Width
Orginal_Height = Source_Img.Height
Aspect_ratio = Orginal_Height / height

Dim thumbnail As System.Drawing.Image = New Bitmap(width,
height)
Dim objGraphics As System.Drawing.Graphics
objGraphics = System.Drawing.Graphics.FromImage(thumbnail)
objGraphics.InterpolationMode =
InterpolationMode.HighQualityBicubic
objGraphics.SmoothingMode = SmoothingMode.HighQuality
objGraphics.PixelOffsetMode = PixelOffsetMode.HighQuality
objGraphics.CompositingQuality = CompositingQuality.HighQuality
If Request.QueryString("thumb") = "false" Then
Return Source_Img
Else
objGraphics.DrawImage(Source_Img, 0, 0, width, height)
Return thumbnail

End If
End Function

Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
Dim originalImg, thumb As System.Drawing.Image

'Dim imagePath As String = Request.QueryString("img")
'Dim maxHeight As Integer = Request.QueryString("h")
'Dim maxWidth As Integer = Request.QueryString("w")
Dim imagePath As String = "jpeg.jpg"
Dim maxHeight As Integer = 200
Dim maxWidth As Integer = 200

'Tento il ridimensionamento on the fly
Try
'Carico l'immagine da ridimensionare
originalImg =
Drawing.Image.FromFile(Server.MapPath(imagePath))

Dim newHeight As Integer = originalImg.Height
Dim newWidth As Integer = originalImg.Width

'Calcolo le dimensionio con le dovute proporzioni
If originalImg.Height maxHeight Then
newHeight = maxHeight
newWidth = (originalImg.Width * newHeight) /
originalImg.Height

If newWidth maxWidth Then
newWidth = maxWidth
newHeight = (originalImg.Height * newWidth) /
originalImg.Width
End If
ElseIf originalImg.Width maxWidth Then
newWidth = maxWidth
newHeight = (originalImg.Height * newWidth) /
originalImg.Width

If newHeight maxHeight Then
newHeight = maxHeight
newWidth = (originalImg.Width * newHeight) /
originalImg.Height
End If
End If

'Imposto il content type dell'output
Response.ContentType = "image/jpeg"

'Ottengo la versione Thumbnail dell'immaine originale
thumb = Get_Thumbnail(originalImg, newHeight, newWidth)

'Imposto il metodo di codifica perchè non si abbiano
perdite di qualità
Dim codecEncoder As ImageCodecInfo =
GetEncoder("image/jpeg")
Dim quality As Integer = 100
Dim encodeParams As New EncoderParameters(1)
Dim qualityParam As New
EncoderParameter(Imaging.Encoder.Quality, quality)
encodeParams.Param(0) = qualityParam

'Restituisco l'immagine all'output in streaming
thumb.Save(Response.OutputStream, codecEncoder,
encodeParams)

'Killo gli oggetti utilizzati
originalImg.Dispose()
thumb.Dispose()
Catch
'Ci sono stati problemi nella creazione del thumbnail
quindi creo al volo un'immagine di avviso (potrei definirne una default
e caricarla)
Dim objBMP As System.Drawing.Bitmap = New Bitmap(110, 110)
Dim objGraphics As System.Drawing.Graphics
objGraphics = System.Drawing.Graphics.FromImage(objBMP)
objGraphics.Clear(Color.Red)
Dim objFont As System.Drawing.Font = New Font("Arial", 16,
FontStyle.Bold)
objGraphics.DrawString("No Image", objFont, Brushes.White,
3, 40)
Response.ContentType = "image/GIF"
objBMP.Save(Response.OutputStream, ImageFormat.Gif)

' Kill our objects
objFont.Dispose()
objGraphics.Dispose()
objBMP.Dispose()
End Try

End Sub
End Class

Oct 19 '06 #1
Share this Question
Share on Google+
4 Replies


P: n/a
Step on:
I've noticed that the problems seem to be the creation of the new
bitmap:
In the Function Get_Thumbnail changing:
Return thumbnail
With:
Return Source_Img

Solve the problem of Page_Load called twice, but obviously i still have
the problem of producing a high quality image.
originalImg.GetThumbnailImage(originalImg.Width, originalImg.Height,
Nothing, IntPtr.Zero)
solve the problem but the resul image is very low quality.

Waiting for your answer

thanks

Gregorio

P.S. sorry for my english but i'm italian

Oct 19 '06 #2

P: n/a

"Greg" <gr************@hotmail.itwrote in message
news:11**********************@m73g2000cwd.googlegr oups.com...
Step on:
I've noticed that the problems seem to be the creation of the new
bitmap:
In the Function Get_Thumbnail changing:
Return thumbnail
With:
Return Source_Img

Solve the problem of Page_Load called twice, but obviously i still have
the problem of producing a high quality image.
originalImg.GetThumbnailImage(originalImg.Width, originalImg.Height,
Nothing, IntPtr.Zero)
solve the problem but the resul image is very low quality.

Waiting for your answer
Hi Greg,

If you use GetThumbnailImage you use a shortcut for a lot of code, that
'assumes' your image quality etc. So a better quality is not to be expected.

You'll have to do it all in full, yourselves (including the image quality).

I have no idea whether or not you need to *create* an image from scratch, or
that you just have a BLOB which contains byte data with an image?

Here is some info how to do it from scratch!

http://technolog.nl/blogs/eprogramme...-and-.NET.aspx
Oct 19 '06 #3

P: n/a
Sorry, i've tried to solve the problem with your article but i wasn't
able to
maybe i'm too newbie...

Oct 19 '06 #4

P: n/a
Ok, problem solved
it was fault of the address bar that load a preview of the image (in
firefox) and causes two Page_Load event.

thanks anyway

Oct 19 '06 #5

This discussion thread is closed

Replies have been disabled for this discussion.