Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    1,056

    upload multiplo E resize

    So che sono due discussioni molto frequenti.....
    ma le due insieme non le ho trovate!

    Dove posso trovare uno script, (o suggerimenti per realizzarlo) per fare l'upload di immagini multiplo + resize
    ???


    Grazie

  2. #2
    L'upload multiplo semplicemente lo fai con più campi file del form con nome diverso ed esegui lo stesso codice per tutti.
    Eventualmente puoi ciclare un array o qualcosa con un nome tipo file$i

    Per il resize se il server è Linux ti consiglio mogrify, va studiato. Ora non ho sottomano un codice adeguato ma non è difficile.

    Ciao. Max
    http://www.massimo-caselli.com
    :: Linux Apache PHP e MySQL Blog ::

  3. #3
    ehm, io te lo sconsiglio di usare le imagemagik...per i seguenti motivi:

    1° essendo che devi richiamare un software esterno, ed in questo caso specifico le image magik, puoi avere problemi per quanto riguarda la velocità di esecuzione rispetto a come faresti l'operazione usando le GD

    2° le imagemagik devono essere pre-installate, cosa che non è facile, dato che moltissimi hoster non le danno, abilitando, per l'appunto, le GD2

    per il resize ho uno script tra gli snippet del mio forum, ma te lo riporto qui

    codice:
    <?php
    function resize_image($img_res, $maxX, $maxY) {
     $actualX=imagesx($img_res);
     $actualY=imagesy($img_res);
     
     if ($actualX>$maxX) {
      $newX=$maxX;
      $newY=($actualY/$actualX)*$newX;
     } else {
      $newY=$maxY;
      $newX=($actualX/$actualY)*$newY;
     }
     
     $tmp_img_res = imagecreatetruecolor($newX, $newY);
     
     $res = imagecopyresampled($tmp_img_res, $img_res, 0, 0, 0, 0, $newX, $newY, $actualX, $actualY);
     return $tmp_img_res;
    }
    
    function save_image($img_res, $filename, $quality=80) {
     imagejpeg($img_res, $filename, $quality);
    }
    
    function print_image($img_res, $quality=80) {
     header('Content-Type: image/jpeg');
     imagejpeg($img_res,NULL, $quality);
    }
    
    $img_res = imagecreatefromjpeg('./test.jpg');
    $new_img_res = resize_image($img_res, 60, 80);
    unset($img_res);
    print_image($new_img_res, 100);
    unset($new_img_res);
    ?>
    ovviamente devi cambiare

    $img_res = imagecreatefromjpeg('./test.jpg');

    per far si che carichi le immagini da ridimensionare corretta, e devi anche cambiare la funzione in base al tipo di formato.

    nel tuo caso devi usare save_image e non print_image dato che ti serve salvarla sul disco l'immagine, non tanto stamparla a video

    se ti interessa qualcosa di molto più avanzato...
    http://phpsoft.no-ip.info/private/imageresize.rar

    Però è incompleto nel senso che questo oltre al resize ti mette il watermark e dei bordi trasparenti dello spessore che vuoi tu, però il watermark è a posizionamento assoluto, non dinamico, quindi se lo vuoi posizionare ad es al centro dell'immagine o nell'angolo basso a destra avrai dei problemi (tranne se le immagini sono tutte uguali di dimensioni) se , però, lo vuoi mettere nell'angolo alto a sinistra, andrà benissimo cosi com'è

    PS: questo file sta sul mio server di casa che è acceso solo di giorno, quindi se provi a scaricarlo stasera e non va...riprova domattina dopo le 9 che è al 99% acceso

    sciauz

  4. #4
    Effettivamente sul discorso di installazione per gli hoster concordo con la persona che ha postato precedentemente.
    Però devi tenere conto che mogrify permette una migliore gestione delle immagini e che cmq basta una rapida verifica sul server che ospiterà l'applicazione.
    Tieni anche presente che è uno dei pacchetti più comuni di molte distro.

    Saluti, Max
    http://www.massimo-caselli.com
    :: Linux Apache PHP e MySQL Blog ::

  5. #5
    [supersaibal]Originariamente inviato da maxgrante
    Effettivamente sul discorso di installazione per gli hoster concordo con la persona che ha postato precedentemente.
    Però devi tenere conto che mogrify permette una migliore gestione delle immagini e che cmq basta una rapida verifica sul server che ospiterà l'applicazione.
    Tieni anche presente che è uno dei pacchetti più comuni di molte distro.

    Saluti, Max [/supersaibal]
    si...ma verametne di rado mi è capitato di vederlo installato ed in ogni caso php deve essere adeguatamente configurato xche senno anche se installato non si può usare.
    E cmq le immagini si possono anche gestire perfettamente con php, e fino ad un certo punto è un bene che su hosting normali ci siano certe limitazioni senno se 10 utenti contemporaneamente usano uno script che si succhia 5 mb di memoria...50 se ne vanno solo per lo script...e su un server in hosting ci stanno dai 500 ai 1500 siti (di più sui server degli hoster + scadenti) e quindi morrebbe del tutto la macchina e gli verrebberò troncate le gambette allo script ^^

  6. #6
    Hai ragione, dimenticavo discorsi tipo safe_mode e open_basedir.

    E' che sono abituato che le mie applicazioni girano su server da me configurati, ergo, non sono abituato a queste problematiche.

    Salut, Max
    http://www.massimo-caselli.com
    :: Linux Apache PHP e MySQL Blog ::

  7. #7
    Io ho provato a seguire quanto detto ma ho un problema.
    Innanzitutto ho ampliato lo script in modo che uploadi sia l'immagine giusta che quella thumb,inoltre ho fatto in modo che le thumb siano sempre 80x80.

    Il punto è che vorrei implementare questo script in uno script delle news in modo che scrivo la news e magari uppo qualche img e mi creo direttamente le thumb.

    Non ho capito bene la storia di usre gli array. inoltre dovrei salvarmi il nome dei vari file che upload almeno in una variabile separati da "," per poterli poi estrarre e ricreare i link a fine news.

    Intanto posto quelo che ho fatto se qualcuno riesce ad aiutarmi
    thanks ^^

    codice:
    <?php
    
    
    function resize_image($img_res, $maxX, $maxY) {
    	 $actualX=imagesx($img_res);
    	 $actualY=imagesy($img_res);
    	 
    	 if ($actualX>$maxX) {
    	  $newX=$maxX;
    	  $newY=$maxY;
    	 } else {
    	  $newY=$maxY;
    	  $newX=$maxX;
    	 }
    	 
    	 $tmp_img_res = imagecreatetruecolor($newX, $newY);
    	 
    	 $res = imagecopyresampled($tmp_img_res, $img_res, 0, 0, 0, 0, $newX, $newY, $actualX, $actualY);
    	 return $tmp_img_res;
    	}
    	
    	function save_image($img_res, $filename, $quality=80) {
    	 imagejpeg($img_res, $filename, $quality);
    	}
    
    function print_image($img_res, $quality=80) {
    	 header('Content-Type: image/jpeg');
    	 imagejpeg($img_res,NULL, $quality);
    	}
    
    if ($HTTP_POST_VARS['submit']) {
    print_r($HTTP_POST_FILES);
    if (!is_uploaded_file($HTTP_POST_FILES['file']['tmp_name'])) {
    $error = "You did not upload a file!";
    unlink($HTTP_POST_FILES['file']['tmp_name']);
    // assign error message, remove uploaded file, redisplay form.
    } else {
    		//a file was uploaded
    		$maxfilesize=102400;
    		if ($HTTP_POST_FILES['file']['size'] > $maxfilesize) {
    		$error = "file is too large";
    		unlink($HTTP_POST_FILES['file']['tmp_name']);
    		// assign error message, remove uploaded file, redisplay form.
    		} else {
    				if ($HTTP_POST_FILES['file']['type'] != "image/gif" AND $HTTP_POST_FILES['file']['type'] != "image/jpeg") { 
    				$error = "This file type is not allowed";
    				unlink($HTTP_POST_FILES['file']['tmp_name']);
    				// assign error message, remove uploaded file, redisplay form.
    				} else {
    						//File has passed all validation, copy it to the final destination and remove the temporary file:
    						copy($HTTP_POST_FILES['file']['tmp_name'],"img/".$HTTP_POST_FILES['file']['name']);
    						print "Il file è stato uploadato con successo!";
    						
    
    						$img_res = imagecreatefromjpeg($HTTP_POST_FILES['file']['tmp_name']);
    						$new_img_res = resize_image($img_res, 80, 80);
    						unset($img_res);
    						save_image($new_img_res,$HTTP_POST_FILES['file']['name'], 80);
    						unset($new_img_res);
    						exit;
    						}
    				} 
    		}
    }
    ?>
    <html>
    <head></head>
    <body>
    <form action="<?=$PHP_SELF?>" method="post" enctype="multipart/form-data">
    <?=$error?>
    
    
    
    Choose a file to upload:
    
    <input type="file" name="file">
    
    <input type="submit" name="submit" value="submit">
    </form>
    </body>
    </html>

  8. #8
    [supersaibal]Originariamente inviato da daniele_dll
    ehm, io te lo sconsiglio di usare le imagemagik...per i seguenti motivi:

    1° essendo che devi richiamare un software esterno, ed in questo caso specifico le image magik, puoi avere problemi per quanto riguarda la velocità di esecuzione rispetto a come faresti l'operazione usando le GD

    2° le imagemagik devono essere pre-installate, cosa che non è facile, dato che moltissimi hoster non le danno, abilitando, per l'appunto, le GD2

    per il resize ho uno script tra gli snippet del mio forum, ma te lo riporto qui

    codice:
    <?php
    function resize_image($img_res, $maxX, $maxY) {
     $actualX=imagesx($img_res);
     $actualY=imagesy($img_res);
     
     if ($actualX>$maxX) {
      $newX=$maxX;
      $newY=($actualY/$actualX)*$newX;
     } else {
      $newY=$maxY;
      $newX=($actualX/$actualY)*$newY;
     }
     
     $tmp_img_res = imagecreatetruecolor($newX, $newY);
     
     $res = imagecopyresampled($tmp_img_res, $img_res, 0, 0, 0, 0, $newX, $newY, $actualX, $actualY);
     return $tmp_img_res;
    }
    
    function save_image($img_res, $filename, $quality=80) {
     imagejpeg($img_res, $filename, $quality);
    }
    
    function print_image($img_res, $quality=80) {
     header('Content-Type: image/jpeg');
     imagejpeg($img_res,NULL, $quality);
    }
    
    $img_res = imagecreatefromjpeg('./test.jpg');
    $new_img_res = resize_image($img_res, 60, 80);
    unset($img_res);
    print_image($new_img_res, 100);
    unset($new_img_res);
    ?>
    ovviamente devi cambiare

    $img_res = imagecreatefromjpeg('./test.jpg');

    per far si che carichi le immagini da ridimensionare corretta, e devi anche cambiare la funzione in base al tipo di formato.

    nel tuo caso devi usare save_image e non print_image dato che ti serve salvarla sul disco l'immagine, non tanto stamparla a video

    se ti interessa qualcosa di molto più avanzato...
    http://phpsoft.no-ip.info/private/imageresize.rar

    Però è incompleto nel senso che questo oltre al resize ti mette il watermark e dei bordi trasparenti dello spessore che vuoi tu, però il watermark è a posizionamento assoluto, non dinamico, quindi se lo vuoi posizionare ad es al centro dell'immagine o nell'angolo basso a destra avrai dei problemi (tranne se le immagini sono tutte uguali di dimensioni) se , però, lo vuoi mettere nell'angolo alto a sinistra, andrà benissimo cosi com'è

    PS: questo file sta sul mio server di casa che è acceso solo di giorno, quindi se provi a scaricarlo stasera e non va...riprova domattina dopo le 9 che è al 99% acceso

    sciauz [/supersaibal]
    Ciao ho provato il tuo codice (scaricato) in locale (win2000pro) con i moduli php su IIS (non mi criticate per questo, è solo questione di esigenze), ma mi ritorna questo errore:
    codice:
    Fatal error: Call to undefined function: imagecreatefromjpeg() in D:\LIBRERIE\php\imageresize\test.php on line 87
    Come mai? è supportato solo da linux questa cosa? Se si io cosa devo fare?

  9. #9
    è supportato ovunque

    xo devi abilitare le GD tra le estensioni di php ^^

    apri il php.ini e rimuovi il ; davanti ad extension=php_gd.dll

  10. #10
    fatto, ma mi da errore anche il phpinfo().
    Sul mio ci sono le gd2 e si trovano in c:\\php\extensions
    Le ho decommentate, ora ho l'errore.

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