Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    687

    errore altezza immagine in proporzione

    ciao a tutti....da un pò utilizzo uno script fatto grazie agli amici del forum per il ridimensionamento delle immagini ed in particolare con l'altezza dell'immagine ridimensionata in proporzione alla larghezza che viene impostata in questa maniera:
    height = Convert.ToInt32(width / bmp.Width * bmp.Height)


    ora mi dà un errore se l'immagine da ridimensionare è + grande di 1 mb e la spiegazione del provider è:

    l''errore è riferito alla variabile che utilizzate (la Convert.ToInt32) che ha una valore massimo di 65538; se nella funzione restituisce un valore maggiore di 65538 si ha l''errore. Di seguito le riporto il debig:

    Out of memory.
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

    Exception Details: System.OutOfMemoryException: Out of memory.

    Source Error:


    Line 24: '' Funzione di redim
    Line 25: Public Sub ImgRedim(immagine as String, width as Integer, height as Integer)
    Line 26: Dim bmp as System.Drawing.Bitmap = CType(System.Drawing.Image.FromFile(immagine), System.Drawing.Bitmap)
    Line 27: if height = 0 Then
    Line 28: height = Convert.ToInt32(width / bmp.Width * bmp.Height)


    Source File: ridimensiona.aspx Line: 26

    Stack Trace:


    [OutOfMemoryException: Out of memory.]
    System.Drawing.Image.FromFile(String filename, Boolean useEmbeddedColorManagement) +263
    System.Drawing.Image.FromFile(String filename) +7
    ASP.ridimensiona_aspx.ImgRedim(String immagine, Int32 width, Int32 height) in ridimensiona.aspx:26
    ASP.ridimensiona_aspx.Page_Load() in ridimensiona.aspx:20
    System.Web.Util.ArglessEventHandlerDelegateProxy.C allback(Object sender, EventArgs e) +10
    System.Web.UI.Control.OnLoad(EventArgs e) +67
    System.Web.UI.Control.LoadRecursive() +35
    System.Web.UI.Page.ProcessRequestMain() +750

    il problema è che su altri siti ospitati dallo stesso provider questo non accade e e tutto funziona benissimo......

    commenti/idee??

  2. #2
    Prova ad usare Convert.ToInt64 che ritorna un Long

    Marco Cavallo
    WebMaster & Programmer
    Il mio sito in continua evoluzione...
    Vieni a trovarmi!
    http://www.artcava.net/

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    io ho esattamente questa istruzione:

    height = Convert.ToInt32(width / bmp.Width * bmp.Height)

    che combaccia perfettamente con la tua.

    Adesso, Convert.ToInt32 è uguale alla istruzione basic CInt, che converte un numero in Integer.
    Solo che gli Integer di questo ambiente corrispondono ai long di ambienti precedenti. L'integer può contenere valori da -2.147.483.648 a 2.147.483.647 più che sufficiente ai nostri scopi.

    Comunque, mi sono preparato una 'piccola immagine' da 50x37 cm, 300 px/inc di risoluzione, formato bmp, 77 MBytes di spazio su disco e l'ho ridimensionata con un metodo che ha proprio la tua istruzione:
    height = Convert.ToInt32(width / bmp.Width * bmp.Height)

    E funziona perfettamente Perciò ne deduco che il problema tuo sia diverso :master:

    Pietro

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    687
    per me il problema è del provider...perchè lo stesso file spostato su altro server, tra l'altro dello stesso provider, funziona correttamente....

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da nikasil
    per me il problema è del provider...perchè lo stesso file spostato su altro server, tra l'altro dello stesso provider, funziona correttamente....
    Penso anch'io che hai ragione
    Pietro

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    687
    ma essendo lo stesso provider ma server diverso...cosa potrebbe essere? almeno gli do un suggerimento visto che non capiscono una sega....CHE NOIA!!!!!!!!!!!!

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    687
    Originariamente inviato da artcava
    Prova ad usare Convert.ToInt64 che ritorna un Long

    ho provato come consigliavi tu ed ora funziona.
    rimane il fatto che è la prima volta che si pone un problema del genere e nessuno sa dare una spiegazione....BOH

    grazie ciao

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    687
    ultimissime: quando si pone il problema devono riavviare IIS ........e poi rifunzionatutto per un pò....ma poi il problema ricompare.....
    notare che su altri server non lo fa...........

  9. #9
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    non è che manchi davvero memoria al server?
    Pietro

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    687
    Originariamente inviato da pietro09
    non è che manchi davvero memoria al server?
    può essere....il problema è che non ho mai visto un provider riconoscere di avere un problema....

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.