Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    14

    Resize di immagini. Strano comportamento

    Salve a tutti.
    Utilizzo il codice riportato di seguito per sovrascrivere una immagine posizionata nella cartella /upload ridimensionandola in modo da avere la larghezza di 800 px e l'altezza proporzionale rispetto alle dimensioni di origine:

    codice:
    $path_to_img="upload/".$file_name;
    $imagehw = GetImageSize($path_to_img);
    $final_width=800;
    $final_height=(800*$imagehw[1])/$imagehw[0];
    $dst_img=ImageCreateTrueColor($final_width,$final_height);
    $src_img=ImageCreateFromJpeg($path_to_img); 
    ImageCopyResampled($dst_img,$src_img,0,0,0,0,$final_width,$final_height,ImageSX($src_img),ImageSY($src_img));
    $tempFile="upload/".$file_name;      // sovrascrive il file
    ImageJpeg($dst_img,$tempFile,90);
    Problema: il codice funziona parzialmente, nel senso che ridimensiona correttamente solo le immagini che non superano una determinata dimensione che ho notato essere attorno ai 500KB. Lo stesso codice l'ho utilizzato facendo delle prove su altri server ed anche in locale sul mio pc, ma in questi casi, lo stessissimo codice funziona perfettamente, ridimensionando immagini di qualsiasi dimensione.
    Secondo voi puo' essere un problema di impostazione del server o devo pensare ad altro? Sottolineo che su tutti i server testati e' presente la libreria GD.
    Ringrazio anticipatamente per le vostre risposte.

  2. #2
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Probabilmente nel file php.ini nella sezione upload hai un limite sulla dimensione massima dei file che puoi caricare.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    14
    Originariamente inviato da Grino
    Probabilmente nel file php.ini nella sezione upload hai un limite sulla dimensione massima dei file che puoi caricare.
    Ho approfondito la questione ed in effetti c'e' una impostazione da variare nel php.ini. Questa impostazione pero' non riguarda l'upload del file, ma la quantita' di memoria assegnata dal server ad ogni script php. Esiste infatti il parametro memory_limit che nel mio caso e' impostato ad "8M": significa che il server assegna una quantita' massima di memoria pari ad 8 MByte per l'esecuzione degli script php.
    Riprendendo il mio problema sul resizing delle immagini, quando viene eseguita l'istruzione $src_img=ImageCreateFromJpeg($path_to_img); il server cerca di caricare nella sua memoria l'immagine da ridimensionare. In questo caso, pero', il server dovrebbe disporre di molta piu' memoria per caricare l'immagine poiche' essa viene rappresentata con tutti i canali di colore RGB. Ecco che gli 8 MByte disponibili sul server non bastano neanche per caricare immagini di 1,5 Mbyte. La soluzione, quindi, e' farsi aumentare il parametro memory_limit a valori di "64M" o "128M", ma non tutti i provider, come nel mio caso, permettono l'aumento del parametro in questione.
    Esistono, comunque, tecniche alternative per aumentare la quantita' di memoria senza scomodare il provider.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.