spero sia tutto chiaro ma fammi sapere
ciao
arnaldo
void risetta_immagine(string nome_immagine, string destinazione, int larghezza_imma_da_ottenere, int lunghezza_imma_da_ottenere)
{
int MaxWidth = larghezza_imma_da_ottenere;
int MaxHeight = lunghezza_imma_da_ottenere;
float proporzione_orizzontale;
float proporzione_verticale;
float proporzione_accettata;
string strFileName = nome_immagine;
if (strFileName != "")
{
try
{
oldImage = System.Drawing.Image.FromFile(Server.MapPath(strFileName));
proporzione_orizzontale = (float)oldImage.Width / MaxWidth;
proporzione_verticale = (float)oldImage.Height / MaxHeight;
if (((proporzione_orizzontale)) > (proporzione_verticale))
{ proporzione_accettata = proporzione_orizzontale; }//cerco di rideminsionare l'immagine in base alla propietà che si avvicina di piu al box di inserimento
else
{ proporzione_accettata = proporzione_verticale; }
newImage = oldImage.GetThumbnailImage((int)(oldImage.Width / proporzione_accettata), (int)(oldImage.Height / proporzione_accettata), null, IntPtr.Zero);
Bitmap cropped = new Bitmap(MaxWidth, MaxHeight);//qui metto le dimensioni della immagine a cui voglio arrivare
Graphics g = Graphics.FromImage(cropped);
int differenza_orizzontale = (MaxWidth - newImage.Width);
int differenza_altezza = (MaxHeight - newImage.Height);
int posizione_lunga = (differenza_orizzontale / 2);//posizione orizzontale dove l'immagine ritagliata verrà a iniziare
int posizione_alta = (differenza_altezza / 2);//posizione verticale da cui partire per centrare l'immagine
g.FillRectangle(new SolidBrush(Color.White), 0, 0, MaxWidth, MaxHeight);//setto il background della bitmap generale
g.DrawImage(newImage, new Rectangle(posizione_lunga, posizione_alta, cropped.Width, cropped.Height), 0, 0, cropped.Width, cropped.Height, GraphicsUnit.Pixel);
//sopra disegno un immagine in un rettangolo bm che inizio in alto (0,0) angolo destro-basso in cropped.width e cropped.height
//l'immagine clonata(croppata) prende la vecchia immagine dall'angolo (0,0)
Response.ContentType = "image/jpeg";
cropped.Save(Server.MapPath(destinazione), System.Drawing.Imaging.ImageFormat.Jpeg);
oldImage.Dispose();
newImage.Dispose();
oldImage = null;
newImage = null;
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
}
}
//richiama la funzione
risetta_immagine(immaginefrom, immagineto,100,200);
File.Delete(percorso_immagine);//qui non devi passargli il percorso relativo dell'imagine bensi quello fisico