120 messaggi dal 23 gennaio 2007
Ho fatto il file uplod per l'iserimento di piu immagini nel database, ora vorrei inserire nel codice un resize, che mi ridimenzioni (in misure specifiche) le dimensioni delle immagini che carico. Qualcuno puo darmi qualche dritta!?!?!?

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
2.410 messaggi dal 13 febbraio 2003
Contributi
consiglio questa lettura
http://www.aspitalia.com/script/401/Ridimensionare-Immagini-.NET.aspx
29 messaggi dal 25 gennaio 2002
ciao
considera però che il problema ha due aspetti:in un eventualità trovi del codice che ti fa visualizzare l'immagine nella dimensioni date richiamando una pagina aspx che ti setta l'immagine "on the fly" ,quindi il peso dell'immagine sul server rimane quella del file uplodato,altrimenti puoi ridimensionare l'immagine appena uplodata ,in modo che il file sul server sia "effettivamente" quello che visualizza (dimensioni piccole =piccolo peso)nel primo caso gli esempi postati sopra sono il top ,se ti interessa ho uno scriptino che fa la seconda cosa ,se sei interessato te lo posto .
Ciao
Arnaldo
29 messaggi dal 25 gennaio 2002
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

38 messaggi dal 21 ottobre 2004
ciao
prova con questo:


Public Function Ridimensiona(ByVal Origine As Bitmap, Optional ByVal DimMax As Integer = 0, Optional ByVal Perc As Integer = 0) As Bitmap
Dim xx As Integer, yy As Integer, zz As Single
xx = Origine.Size.Width
yy = Origine.Size.Height
zz = IIf(xx > yy, xx, yy)
If DimMax > 0 Then
xx = CInt((xx / zz) * DimMax)
yy = CInt((yy / zz) * DimMax)
ElseIf Perc > 0 Then
xx = CInt(xx * Perc / 100)
yy = CInt(yy * Perc / 100)
End If
Dim temp As Bitmap
temp = New Bitmap(xx, yy)
Dim dest As Graphics = Graphics.FromImage(temp)
dest.DrawImage(Origine, 0, 0, temp.Width + 1, temp.Height + 1)
Origine.Dispose()
Return temp
End Function

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.