Va bene vi incollo il codice a pezzi per rendervi, spero, tutto un pò più facile...

codice:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.OleDb;
using System.IO;
using System.Data;
using System.Drawing.Drawing2D;
using System.Drawing;
using System.Drawing.Imaging;
using System.Globalization;

public partial class insert_image : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    bool IsImage(string fileName)
    {
        string ext = Path.GetExtension(fileName).ToLower();
        bool imageFlag = false;

        if (ext != null)
        {
            switch (ext)
            {
                case ".emf": // Enhanced Windows metafile image format
                case ".exif": // Exchangable Image Format
                case ".ico": // Windows icon image format (extension .ico)
                case ".wmf": // Windows metafile image format (extension .wmf)
                case ".png": // Specifies the W3C Portable Network Graphics image format (extension .png)
                case ".gif": // Graphics Interchange Format image format (extension .gif)
                case ".bmp": //Bitmap image format (extension .bmp)
                case ".tiff": // Tag Image File Format (extension .tif)
                case ".tif": // Tag Image File Format (extension .tif)
                case ".jpeg": // Joint Photographic Experts Group image format (extensions .jpg, .jpeg)
                case ".jpg": imageFlag = true; break; // Joint Photographic Experts Group image format (extensions .jpg, .jpeg)

                default: imageFlag = false; break;  // Not a supported file type.
            } // switch (ext)
        } // if (ext != null)
        else
            imageFlag = false;

        return imageFlag;
    } // bool IsImage(string fileName)


    void CalcolaAspectRatio(double orgWidth, double orgHeight, ref double newWidth, ref double newHeight)
    {
        // Se le dimensioni dell'immagine originale e quelle nuove coincidono non facciamo nulla.
        if ((orgWidth == newWidth) && (orgHeight == newHeight)) return;

        // Se le dimensioni originali dell'immagine sono minori di quelle desiderate lasciamo stare.
        // In pratica NON facciamo l'ingrandimento della stessa.
        if ((newWidth > orgWidth) && (newHeight > orgHeight))
        {
            newWidth = orgWidth;
            newHeight = orgHeight;
            return;
        }

        double resw = newWidth;
        double resh = newHeight;
        double aw = orgWidth / orgHeight; // fattore larghezza.
        double ah = orgHeight / orgWidth; // fattore altezza.

        // Se l'immagine è più piccola del Thumbnail forziamo le dimensioni di 
        // quest'ultimo alle dimensioni dell'immagine.
        if (resw > orgWidth) resw = orgWidth;
        if (resh > orgHeight) resh = orgHeight;
        // Se le dimensioni dell'immagine e del Thumbnail corrispondono non facciamo nulla.
        // quindi se l'immagine è quadrata...
        if (orgWidth != orgHeight)
        {
            // Se l'immagine non è quadrata
            // continuiamo a fare i nostri controlli per calcolarne le 
            // giuste dimensioni e quindi creare la nostra nuova immagine con
            // l'aspectratio corretto.

            // Se l'immagine è più larga che alta
            if (orgWidth > orgHeight)
            {
                // L > H => L = tL
                // La larghezza del TN sarà quella da noi stabilita
                // quindi dobbiamo solo assegnarla.
                resw = resw;
                // L'altezza del TN invece dovrà essere ricalcolata 
                // in proporzione alla larghezza dell'immagine originale.
                // L > H => tH =  tL * (H / L)
                resh = ah * resw;
            } // if (tmporgWidth > tmporgHeight)
            else
            {
                // Altrimenti se l'immagine è più alta
                if (orgWidth < orgHeight)
                {
                    // L < H => H = tH
                    // L'altezza del TN sarà quella da noi stabilita
                    // quindi dobbiamo solo assegnarla.
                    resh = resh;
                    // La larghezza del TN invece dovrà essere ricalcolata 
                    // in proporzione alla altezza dell'immagine originale.
                    // L < H => tL = tH * (L / H)
                    resw = aw * resh;
                } // if (orgWidth < orgHeight)
            } // else
        } // if (orgWidth != orgHeight)

        // assegnamo i valori calcolati alle nostre due variabili ed il gioco è fatto.	
        newWidth = resw;
        newHeight = resh;
    } // void CalcolaAspectRatio(double orgWidth, double orgHeight, ref double newWidth, ref double newHeight)

    void UploadAndResizeAnImage(HttpPostedFile file, double newWidth, double newHeight, string virPath, bool overwrite)
    {
        string destPath = ".";
        double resWidth = 1.0;
        double resHeight = 1.0;
        bool owr = false;
        bool exist = false;

        if (virPath != "") destPath = virPath;
        if (newWidth > 0) resWidth = newWidth;
        if (newHeight > 0) resHeight = newHeight;

        if (overwrite)
            owr = true;
        else
            owr = false;

        int pathCheck = (destPath.Substring(destPath.LastIndexOf('/') + 1)).Length;
        if (pathCheck > 0) destPath += "/";

        string fileName = Path.GetFileName(file.FileName);
        string estensione = Path.GetExtension(file.FileName).ToLower();

        ImageCodecInfo[] imgCodec = ImageCodecInfo.GetImageEncoders();
        EncoderParameters encPars = new EncoderParameters(2);
        EncoderParameter encPar1 = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L);
        EncoderParameter encPar2 = new EncoderParameter(System.Drawing.Imaging.Encoder.Compression, 100L);

        encPars.Param[0] = encPar1;
        encPars.Param[1] = encPar2;

        destPath = Server.MapPath(destPath);
        exist = File.Exists(destPath + fileName);

        if (!exist && (fileName.Length != 0) || owr)
        {
            if (!IsImage(fileName))
            {
                if (fileName.Length != 0)
                    Status.Text += "<span style=\"color:Red;\">File '" + fileName + "' is not a valid image format. Upload... Aborted.</span>
";
                return;
            } // if (!IsImage(fileName))


            using (System.Drawing.Image image = System.Drawing.Image.FromStream(file.InputStream))
            {
                CalcolaAspectRatio(image.Width, image.Height, ref resWidth, ref resHeight);

                using (Bitmap bitmap = new Bitmap((int)(resWidth), (int)(resHeight)))
                {
                    string message = "Uploaded";

                    bitmap.SetResolution(image.HorizontalResolution, image.VerticalResolution);

                    Graphics g = Graphics.FromImage(bitmap);
                    g.InterpolationMode = InterpolationMode.HighQualityBicubic;
                    g.SmoothingMode = SmoothingMode.HighQuality;
                    g.PixelOffsetMode = PixelOffsetMode.HighQuality;
                    g.CompositingQuality = CompositingQuality.HighQuality;
                    g.DrawImage(image, new Rectangle(0, 0, (int)(resWidth), (int)(resHeight)));
                    g.Dispose();

                    if (exist && owr)
                    {
                        message = "OverWritted";
                        try
                        {
                            File.Delete(destPath + fileName);
                        }
                        catch (IOException ioe)
                        {
                            message = "<div id=\"error\">Error: " + ioe.GetType().Name + ": The write operation could not be performed because the specified part of the file is locked. Not OverWritted</div>";
                        }
                    } // if (exist && owr)

                    if ((estensione == ".jpg") || (estensione == ".jpeg"))
                        bitmap.Save(destPath + fileName, imgCodec[1], encPars);
                    else
                        bitmap.Save(destPath + fileName, image.RawFormat);

                    Status.Text += "<span style=\"color:Green;\">File '" + fileName + " &#64; [" + (int)(image.Width) + "px X " + (int)(image.Height) + "px]' " + message + " with this new size [" + (int)(resWidth) + "px X " + (int)(resHeight) + "px]</span>
";
                } // using(Bitmap bitmap = new Bitmap( (int)(resWidth), (int)(resHeight)))
            } // using(Image image = Image.FromFile(file))
        } // if (!exist && (fileName.Length != 0) || owr)
        else
        {
            if (exist && (!owr))
                Status.Text += "<span style=\"color:Red;\">Error : The file \"<u>" + fileName + "</u>\" already exist... Upload Aborted.</span>
";
        }
    } //  void UploadAndResizeAnImage(HttpPostedFile file, double newWidth, double newHeight, string virPath, bool overwrite)

    //Inizio Test1 dello script
    int GetUserID()
    {
        string userID = "0";
        // C'è qualcosa nella querystring?
        if (Request.QueryString.Count != 0)
        {
            if (Request.QueryString["userid"] != null)
                userID = Request.QueryString["userid"];
            else
                userID = "0";
        }
        return (Convert.ToInt32(userID));
    } 
    //Fine Test1 dello script

    void InserisciNomiDeiFilesNelDB_Access(string fileList, char token, string Categoria)
    {
        //string fileName = Server.MapPath("image_insert/") + FileUpload1.FileName;
        // Estraggo dalla lista concatenata i nomi dei file e ne creo un array di stringhe. 
        string[] fileListSplitted = fileList.Split(new Char[] { token });
        // Conto quante stringhe ne sono uscite 
        int fLS = fileListSplitted.Length;
        string fileName = "";
        Status.Text += "
<hr>Inserimento dei dati nel DataBase : 

";
        foreach (string s in fileListSplitted)
        {
            if (s != "")
            {
                fileName = s;
                // Qui inserite la parte di codice per l'inserimento vero e proprio nel DataBase
                int userID = GetUserID();
                string connString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Server.MapPath("App_Data/Immagini.mdb") + ";";
                string sqlString = "INSERT INTO [Privata3] (ID,descrizione,immagine) VALUES ('" + userID + "','" + fileName + "', '" + Categoria + "');";
                using (System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(connString))
                {
                    conn.Open();
                    System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(sqlString, conn);
                    try
                    {
                        cmd.ExecuteNonQuery();
                        Status.Text += "<span style=\"color:Green;\">File '" + fileName + "' Inserito correttamente. Ok!
</span>";
                    }
                    catch (Exception ex)
                    {
                        //  Response.Write("
Si &egrave; verificato un errore durante l'esecuzione dello script SQL corrente.
"); 
                        Status.Text += "<span style=\"color:Red;\">Errore : " + ex.Message + "</span>
";
                    }
                    finally
                    {
                        conn.Close();
                    }
                } // using (OleDbConnection conn = new OleDbConnection(connString)) 
                // Fine codice per inserimento nel DataBase 

            }
        } // foreach (string s in fileListSplitted)    
    }