Visualizzazione dei risultati da 1 a 3 su 3

Discussione: VB.NET Image resize

  1. #1

    VB.NET Image resize

    Salve,
    da parecchio tempo usiamo questo script in asp.net per ridimensionare le immagini in linea. Il file si chiama zoom.aspx e di solito lo usiamo per richiamare le immagini jpeg ridimensionate in questo modo [img]zoom.aspx?imgfile=nomedelfile.jpg&with=320&height= 240[/img] in pratica così facendo troviamo l'immagine (solitamente grande) ridimensionata lato server i peso e dimensioni a 320x240 o cmq in proporzioni per rimanere dentro questo spazio:
    Ecco lo script:
    codice:
    <%@ LANGUAGE="VB" AutoEventWireup="true" %>
    <%@ Import Namespace="System.Drawing" %>
    <%@ Import Namespace="System.Drawing.Imaging" %>
    <script runat="server" language="VB">
    	Private Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
    	
    	Dim MaxWidth As Single = Convert.ToSingle(Request.QueryString("width"))
    	Dim MaxHeight As Single = Convert.ToSingle(Request.QueryString("height"))
    	Dim imgFileName As String = Request.QueryString("imgFile")
    	Dim objImage As System.Drawing.Image
    	Dim objResizedImg As System.Drawing.Image
    	Dim imgOutputFormat As ImageFormat
    	Dim ContentTypeName As String
    	Dim DimOrizz As Integer
    	Dim DimVert As Integer
    	
    	'Crea una istanza della immagine originale
    	objImage = System.Drawing.Image.FromFile(Page.MapPath(imgFileName))
    	
    	DimOrizz = objImage.Width
    	DimVert = objImage.Height
    	If DimOrizz > MaxWidth Then
    		DimOrizz = MaxWidth
    		DimVert = (MaxWidth / objImage.Width) * objImage.Height
    		If MaxHeight > 0 Then
    			If DimVert > MaxHeight Then
    				DimVert = MaxHeight
    				DimOrizz = (MaxHeight / objImage.Height) * objImage.Width
    			End If
    		End If
    	Else
    		If DimVert > MaxHeight Then
    			DimVert = MaxHeight
    			DimOrizz = (MaxHeight / objImage.Height) * objImage.Width
    		Else
    			DimOrizz = objImage.Width
    			DimVert = objImage.Height
    		End If
    	End If
    	
    	'Crea una istanza della immagine ridotta
    	objResizedImg = objImage.GetThumbnailImage(DimOrizz, DimVert, AddressOf On_GetThumbnailAbort, IntPtr.Zero)
    	
    	'Seleziona la estensione
    	Select Case LCase(imgFileName.Split(".")(1).ToString)
    	
    		Case "gif"
    			imgOutputFormat = ImageFormat.Gif
    			contentTypeName = "image/gif"
    			
    		Case "jpg"
    			imgOutputFormat = ImageFormat.Jpeg
    			contentTypeName = "image/jpeg"
    	End Select
    	
    	'Imposta il MIME-Type per il brwoser
    	Page.Response.ContentType = contentTypeName
    	'Persiste immagine ridemensionata nello strema di Output
    	objResizedImg.Save(Page.Response.OutputStream, imgOutputFormat)
    	objImage.Dispose()
    	objResizedImg.Dispose()
    		
    	End Sub
    	
    	Private Function On_GetThumbnailAbort() As Boolean
    		Return False
    	End Function
    </script>
    Il problema è che con immagini non a 72 dpi (quasi tutte quelle che escono dalle fotocamere digitali ultimamente) il risultato è pessimo. potete verificare voi stessi. Esiste modo di metterci mano o ne esistono altri che lavorano in modo analogo con risultati più elastici?
    Grazie mille
    Enrico Frison
    El signore ghe da e suche a chi che no ga i porsei!

  2. #2
    Ciao,
    prova ad utilizzare le proprietà Antialias e HighQualityBicubic
    dovrebbe risolvere il problema.
    Io riesco a caricare immagini anche oltre i 600 dpi e va benissimo!

  3. #3
    una cosa di questo genere intendo:
    codice:
    Dim newGraphic As Graphics = Graphics.FromImage(newBmp)
    
                    
    
                        newGraphic.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
    
                        newGraphic.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
    
                        newGraphic.DrawImage(upBmp, newX, newY, newWidth, newHeight)
    
                        newBmp.Save(MapPath(filePath), Imaging.ImageFormat.Png)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.