Ciao a tutti.
Ho fatto una ricerca sia qui sul forum e sia su google ma nonostante abbia trovato molto materiale non ho trovato nulla che potesse andare bene alle mie esigenze.
Premetto che non alcuna nozione di asp.net. Ho un sito fatto in normale asp ma volevo affidarmi all'asp.net per fare il ridimensionamento.
Ho creato una pagina aspx con questo script:
Passando in querystring il nome dell'immagine procede al ridimensionamento al volo.codice:<%@ Page Language="C#" %> <%@ import Namespace="System.Drawing" %> <%@ import Namespace="System.Drawing.Imaging" %> <%@ import Namespace="System.Text.RegularExpressions" %> <script runat="server"> int MaxWidth = 100; // Larghezza massima dopo il quale l'immagine viene ridimensionata int MaxHeight = 100; // Altezza massima dopo il quale l'immagine viene ridimensionata int valorelarghezza = 100; int valorealtezza = 100; System.Drawing.Image oldImage, newImage; void Page_Load(Object sender, EventArgs e) { if ( Request.QueryString["FileName"] != null ) { string strFileName = Convert.ToString(Request.QueryString["FileName"]); if ( strFileName != "" ) { try { oldImage = System.Drawing.Image.FromFile( Server.MapPath(strFileName) ); int larghezzafoto = oldImage.Width; int altezzafoto = oldImage.Height; int confrontolarghezza = larghezzafoto - valorelarghezza; int confrontoaltezza = altezzafoto - valorealtezza; if ( confrontolarghezza > 0 || confrontoaltezza > 0 ) { if ( confrontolarghezza > confrontoaltezza ) { altezzafoto = ((valorelarghezza*altezzafoto)/larghezzafoto); if ( (valorealtezza - altezzafoto) < 6 ) { altezzafoto = valorealtezza; } larghezzafoto = valorelarghezza; } else { larghezzafoto = ((valorealtezza*larghezzafoto)/altezzafoto); if ( (valorelarghezza - larghezzafoto) < 6 ) { larghezzafoto = valorelarghezza; } altezzafoto = valorealtezza; } } if ( oldImage.Width > MaxWidth || oldImage.Height > MaxHeight ) { // Immagine troppo grande, visualizzo la miniatura newImage = oldImage.GetThumbnailImage( (larghezzafoto), (altezzafoto), null, IntPtr.Zero); Response.ContentType = "image/jpeg"; newImage.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg); oldImage.Dispose(); newImage.Dispose(); oldImage = null; newImage = null; } else { // Immagine piccola, non faccio nulla Response.ContentType = "image/jpeg"; oldImage.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg); oldImage.Dispose(); oldImage = null; } } catch (Exception ex) { Response.Write(ex.Message); } } } } private bool IsInteger(string strTmp) { Regex objNotIntPattern = new Regex("[^0-9-]"); Regex objIntPattern = new Regex("^-[0-9]+$|^[0-9]+$"); return !objNotIntPattern.IsMatch(strTmp) && objIntPattern.IsMatch(strTmp); } </script>
Avrei necessità però di implementare questo script con una funzione in più.
Vorrei che mi restituisse sempre un immagine di una dimensione precisa, completando l'eventuale parte mancante con uno sfondo colorato (ad esempio bianco)
In pratica vorrei inserire questa immagine ridimensionata sovrapposta e al centro di in un rettangolo bianco (oppure di un'altra immagine) di dimensione prefissata.
Potete aiutarmi?
Grazie in anticipo

 
			
			 
					
					
					
						 Rispondi quotando
  Rispondi quotando