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();
}
}