Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    233

    da questo upload fare resize immagine

    Ciao a tutti,

    sono un neofita con asp.net.
    Vorrei che qualche anima pia mi aiutasse a risolvere questo problema:

    da questa procedura di upload che funge vorrei poter ridimensionare l'immagine ad un valore preimpostato tipo 450x450 in maniera porporzionale e venga salvata nella cartella images. Mi piacerebbe che poi eseguisse di nuovo la procedura per creare una thunmbnail in un'altra cartella images_small di dimensioni proporzionali 100x100.

    Ho cercato e ricercato ma non ho capito bene come si fà ...
    Spero possiate aiutarmi e che possa essere utile anxche ad altri
    Grazie a tutti per la comprensione...

    Io sono partito da questo

    if (Foto.PostedFile != null)
    {
    try
    {
    HttpPostedFile File_Foto = Foto.PostedFile;
    string FileName_Foto = Path.GetFileName(File_Foto.FileName);
    int FileLen_Foto = File_Foto.ContentLength;
    if (FileLen_Foto > 1000000) // Check for Maximum File Length
    {
    lblMessage.Text = "Foto - (1000000 Bytes)";
    return false;
    }
    if (FileLen_Foto > 0)
    {
    Stream Stream_Foto = File_Foto.InputStream;
    FileName_Foto = ewdb.ewUploadFileName(FileName_Foto);
    File_Foto.SaveAs (Server.MapPath("images/" + FileName_Foto)); oCmd.Parameters.Add("@Foto",OleDbType.VarWChar,255 ).Value = FileName_Foto;
    }
    }
    catch (Exception oErr) // Error Handling
    {}
    }


    che chiama questa procedura (che non fà nulla adesso ?!)

    public string ewUploadFileName(string sFileName)
    {
    string sOutFileName;

    // Amend your logic here
    sOutFileName = sFileName;

    // Return computed output file name
    return sOutFileName;
    } // End ewUploadFileName

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    233
    Grazie ZofM,

    ma in questo script vedo che viene fatto lo stream presumo dal fatto che ci sia Response.OutputStream.

    e per sarvarlo basta sosituire qualcosa lì?

    Grazie.

    Hw

  4. #4
    Si esatto, il metodo Save della classe Image può salvare in uno stream o in un file, sostituisci:

    newImage.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);

    con

    newImage.Save("c:\pippo.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);

    e vedrai che funzica

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    233
    Thanks adesso provo,

    ma si può metter anche un percorso relativo e non asoluto ??

    Grazie.

    Hw

  6. #6
    Originariamente inviato da hw.master
    Thanks adesso provo,

    ma si può metter anche un percorso relativo e non asoluto ??

    Grazie.

    Hw
    No, per i relativi devi utilizzare il Server.MapPath

  7. #7

    Ciao

    Io ho provato a mettere il Server.MapPath e anche il c:\ ecc...ma non mi funziona!!!

    Posto qui sotto il codice modificato da me mi potreste aiutare con le correzioni opportune?!?!?!??!
    --------------------------------------------------
    <%@ Page Language="C#" %>
    <%@ import Namespace="System.Drawing" %>
    <%@ import Namespace="System.Drawing.Imaging" %>
    <%@ import Namespace="System.Text.RegularExpressions" %>
    <script runat="server">

    int MaxWidth = 100; // Larghezza massima dopo il quale l'immagine viene ridimensionata
    int MaxHeight = 100; // Altezza massima dopo il quale l'immagine viene ridimensionata
    int ScaleFactor = 20; // Fattore di scala per la miniatura
    System.Drawing.Image oldImage, newImage;

    void Page_Load(Object sender, EventArgs e) {
    if ( Request.QueryString["FileName"] != null ) {
    string strFileName = Convert.ToString(Request.QueryString["FileName"]);
    if ( Request.QueryString["ScaleFactor"] != null && Convert.ToString(Request.QueryString["ScaleFactor"]) != "" && IsInteger(Convert.ToString(Request.QueryString["scalefactor"])) ) ScaleFactor = Convert.ToInt32(Request.QueryString["ScaleFactor"]);
    if ( strFileName != "" ) {
    try {
    oldImage = System.Drawing.Image.FromFile( Server.MapPath(strFileName) );
    if ( oldImage.Width > MaxWidth || oldImage.Height > MaxHeight ) {
    // Immagine troppo grande, visualizzo la miniatura
    newImage = oldImage.GetThumbnailImage( (oldImage.Width*ScaleFactor/100), (oldImage.Height*ScaleFactor/100), null, IntPtr.Zero);
    Response.ContentType = "image/jpeg";
    newImage.Save(Server.MapPath("/photo/FileName"), System.Drawing.Imaging.ImageFormat.Jpeg);
    oldImage.Dispose();
    newImage.Dispose();
    oldImage = null;
    newImage = null;
    } else {
    // Immagine piccola, non faccio nulla
    Response.ContentType = "image/jpeg";
    oldImage.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
    oldImage.Dispose();
    oldImage = null;
    }
    } catch (Exception ex) {
    Response.Write(ex.Message);
    }
    }
    }
    }

    private bool IsInteger(string strTmp) {
    Regex objNotIntPattern = new Regex("[^0-9-]");
    Regex objIntPattern = new Regex("^-[0-9]+$|^[0-9]+$");
    return !objNotIntPattern.IsMatch(strTmp) && objIntPattern.IsMatch(strTmp);
    }

    </script>
    ---------------------------------

    grazie mille....

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.