Torna al Thread

public void caricaRidimensionaImmagine(int altezza, int larghezza, int risoluzione,string pathImmagine) { string errore; int bmpW = larghezza; int bmpH = altezza; int newWidth = bmpW; int newHeight = bmpH; //creo un nuovo bitmap usando l'immagine caricata come stream //imposto la risoluzione dell'immagine //Image upBmp;//= Bitmap.FromStream(FileUpload1.PostedFile.InputStream); //upBmp = Image.FromFile(System.Web.HttpContext.Current.Server.MapPath(pathImmagine)); //********************* CONTROLLARE QUESTO PEZZO DI CODICE CHE DA UN ECCEZIONE DI TIPO GDI+ ******************************************** Bitmap upBmp; upBmp = (Bitmap)Bitmap.FromFile(System.Web.HttpContext.Current.Server.MapPath(pathImmagine)); //************************************************************************************************************************************** Bitmap newBmp = new Bitmap(newWidth, newHeight, System.Drawing.Imaging.PixelFormat.Format24bppRgb); newBmp.SetResolution(risoluzione, risoluzione); //ottengo l'altezza e la larghezza del file caricato int upWidth = upBmp.Width; int upHeight = upBmp.Height; int newX = 0; int newY = 0; decimal reDuce; //mantengo le proporzioni dell'immagine //foto paesaggio: larghezza > altezza if (upWidth > upHeight) { reDuce = newWidth / upWidth; //calcolo la riduzione in percentuale della larghezza in decimal newHeight = (int)(upHeight * reDuce); //riduco l'altezza dell'immagine caricata newY = (int)((bmpH - newHeight) / 2); newX = 0; //foto ritratto: altezza> larghezza } else if (upWidth < upHeight) { reDuce = newHeight / upHeight; //calcolo la riduzione in percentuale dell'altezza in decimal newWidth = (int)(upWidth * reDuce); //riduco l'altezza dell'immagine caricata newX = (int)((bmpW - newWidth) / 2); newY = 0; //foto quadrata: altezza=larghezza } else if (upWidth == upHeight) { reDuce = newHeight / upHeight; //calcolo la riduzione in percentuale dell'altezza in decimal newWidth = (int)(upWidth * reDuce); //riduco l'altezza dell'immagine caricata newX = (int)((bmpW - newWidth) / 2); newY = (int)((bmpH - newHeight) / 2); } //creo una nuova immagine dalla fotografia caricata usando la classe Graphics //pulisco la variabile a ne imposto il colore di sfondo //uso l'antialias e l'High Quality Bicubic per mantenere una buona immagine //salvo la nuova immagine nel formato .png Graphics newGraphic = Graphics.FromImage(newBmp); try { newGraphic.Clear(Color.Black); newGraphic.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; newGraphic.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; newGraphic.DrawImage(upBmp, newX, newY, newWidth, newHeight); newBmp.Save(System.Web.HttpContext.Current.Server.MapPath(pathImmagine), System.Drawing.Imaging.ImageFormat.Png); } catch (Exception ex) { errore = ex.ToString(); } finally { upBmp.Dispose(); newBmp.Dispose(); newGraphic.Dispose(); } }
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5