Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: Parameter is not valid

  1. #1
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080

    Parameter is not valid

    Ho questo script:

    codice:
    file1.PostedFile.SaveAs("c:/inetpub/wwwroot/miac/fotoup/1_" + nomefile); System.IO.FileStream file = new System.IO.FileStream("fotoup/1_" + nomefile, System.IO.FileMode.Open);
    System.Drawing.Image bmpStream = System.Drawing.Image.FromStream(file);
    
    object altezza = bmpStream.Height;
    object larghezza = bmpStream.Width;
    
    int w;
    int h;
    
    if (Convert.ToInt32(larghezza) > 450)
    {
    w = 450;
    h = ((450 * Convert.ToInt32(altezza)) / Convert.ToInt32(larghezza));
    file.Close();
    
    ResizeAndSave(file1.PostedFile.InputStream, w, h, "c:/inetpub/wwwroot/miac/fotoup/2_" + nomefile3);
    
    }
    
    
    w = 90;
    h = 90;
    
    ResizeAndSave(file1.PostedFile.InputStream, w, h, "c:/inetpub/wwwroot/miac/fotoup/3_" + nomefile2);
    Se carico una img minore di 450px di larghezza è tutto ok, se invece ne carico una più grande finisce correttamente nell'if il problema che quando va a fare il ResizeAndSave finale (ultima riga) ottengo l'errore Parameter is not valid sulla prima riga della funzione ResizeAndSave che sarebbe: System.Drawing.Image bmpStream2 = System.Drawing.Image.FromStream(imgStr);

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    a me sembra giusto
    Puoi mandare la firma del metodo ResizeAndSave?

    ps. anch'io uso un metodo simile

    lib.ImgResizeAndSaveToFile(this.FileUpload1.Posted File, 300, -1,******


    bisogna vedere però cosa c'è dentro
    Pietro

  3. #3
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    codice:
        private void ResizeAndSave(Stream imgStr, int Width, int Height, string FileName)
        {
    
            System.Drawing.Image bmpStream2 = System.Drawing.Image.FromStream(imgStr);
    
            Bitmap img = new Bitmap(bmpStream2, new Size(Width, Height));
    
                img.Save(FileName, System.Drawing.Imaging.ImageFormat.Jpeg);
    
                imgStr.Close();
    
        }
    Santo Pietro!

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Puoi controllare w e h ricevuti dalla funzione? a me dà errore solo se invio valori <= 0
    Pietro

  5. #5
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Allora...

    Se carico una img con larghezza < a 450px va tutto ok!!! E il resizeandsave non da problemi.

    Se invece carico un img con larghezza superiore a 450 mi salva l'immagine con nome che inizia per 1_ (img originale), mi salva quella con nome che inizia per 2_ (img iniziale ridimensionata) ma non mi fa la miniatura 90x90!!!

    ---

    Comunque inserendo una img di 500x213 (che sarebbe l'img incriminata che da problemi)
    la prima volta nel resizeandsave i parametri sono: h: 191 e w: 450 (giusti)
    la secoda volta invece sono 90 e 90 (giusti).

    ---

    Allora possibile che mi rimanga aperto il file? A volte ho problemi a cancellarlo anche da win.
    Sonia

  6. #6
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    non so più cosa dire.

    Nella tua funzione ResizeAndSave non vedo img.dispose()


    in un mio metodo quasi simile lo metto

    esempio:

    codice:
    public static void ImgResizeAndSaveToFile(HttpPostedFile immagineInput, int width, int height, ***)
    {
    	Bitmap bmp = ImgLoad(immagineInput);
    	ImgResize(ref bmp, width, height, interpolazione, ingrandisciPerAdattare);
    	ImgSaveToFile(bmp, immagineOutput, formatoOutput, compressione);
    	bmp.Dispose();
    }
    Pietro

  7. #7
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Che farebbe .dispose?
    Se lo metto dice: Error 1 'System.Drawing.Bitmap' does not contain a definition for 'dispose'

    ---

    Per provare a usare la tua funzioncina che sono gli asterischi???

  8. #8
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da Sonikag
    Che farebbe .dispose?
    Se lo metto dice: Error 1 'System.Drawing.Bitmap' does not contain a definition for 'dispose'

    ---

    Per provare a usare la tua funzioncina che sono gli asterischi???
    1)
    io uso il framework2, con l'1.1 penso basti mettere close()

    2)
    gli asterischi indicano una ellissi :ignore:
    Non puoi usare la "mia funzioncina" perchè fa parte di una classe e l'ho messa solo per rimarcare che chiudo l'immagine dopo averla salvata, altrimenti non puoi farci niente, se non resettare IIE o spegnere il computer
    Pietro

  9. #9
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Ecco vedevo mancassero pezzi di codice ma così tanti no :P

    Riepilogo.

    Inserisco img... salvo img e se è più piccola di 450px faccio una miniatura 90x90>>> COSI FUNZIONA

    Inserisco img... salvo e vedo che è più larga di 450px, calcolo le dimensioni e con la mia funzioncina faccio salvare unf ile con le dimensioni ridimensionate (e fino a qui va) quando però devo fare la miniatura 90x90 va in banana con l'errore sopracitato.

    Dunque... adesso nella mia Funzioncina ci sono solo response.write.... e tutti i valori sembra arrivino correttamente. Il problema è quindi che se la eseguo una volta tutto va ok... se la eseguo due volte va in palla!

    dalla disperazione ho provato a mettere alla fine della mia funzione
    imgStr.Dispose();
    imgStr.Close();
    img.Dispose();

    ma il problema continua!

    ---

    ho fatto una prova... duplicato la mia funzioncina e cambiato tutti i nomi...
    praticamente quado facevo la miniatura 90x90 usavo la funzioncina2

    E come sempre... se l'immagine non necessitava di resize veniva fatta la miniatura e tutto ok. Mentre se dovevo fare 2 resize ho di nuovo lo stesso errore nonostante usi due funz diverse.

  10. #10
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    :master: Ho guardato meglio


    1) lanci la funzione ResizeAndSave

    2) la funzione chiude lo stream

    3) rilanci la funzione con lo stream chiuso e dà errore
    Pietro

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.