• ModSenior

    Qua c'è qualcosa che ti può servire...
    http://www.giorgiotave.it/forum/php-mysql/82058-batch-resize-di-una-cartella.html

    se poi hai qualche problema nel realizzarlo noi siamo qui 😄


  • User Attivo

    ti ringrazio di avermi risposto...:)
    purtroppo però nn mi sono state granke d aiuto...


  • User Attivo

    :?:?@carlitos1982 said:

    ti ringrazio di avermi risposto...:)
    purtroppo però nn mi sono state granke d aiuto...

    [PHP]
    <form method="POST" enctype="multipart/form-data" action="iscr.php">
    <table border="0" cellpadding="0" cellspacing="1" align="center">
    <body>
    <p>Scegli il nick da usare nel sito</p>
    <p><input type="text" name="nome" value=""</p>
    <p>Inserisci qui la tua email</p>
    <p><input type="text" name="utenteemail" value="" size="20"</p>
    <p>Inserisci qui sotto una tua descrizione <p><textarea rows="9" name="S1" cols="30"></textarea></p>

    <p> </p>

    <p>Sesso</p>
    <p><input name="sesso" type="radio" value="maschio" checked="checked" />
    Maschile</p>
    <p><input name="sesso" type="radio" value="femmina" checked="checked" />
    Femminile</p>
    <p>Inserisci la tua password</p>
    <p><input type="password" name="password" value="" </p><p>
    <input type="hidden" name="MAX_FILE_SIZE" value="30000">
    Invia questo la tua foto: <input name="userfile" type="file">
    <p><p><input type="submit" value="Registrati" </p>
    <p><input type="reset" value="Cancella tutto" </p>
    </form>
    </div>
    </body>
    </html>
    </body>
    </html>
    [/PHP]
    questa sarebbe la pagina htm che ho cerato pe rl iscrizione al sito...che include il campo per inviare le foto

    quest altra sareebbe la pagina che recupera i dati dal form precedente compresa la foto
    [PHP]

    <?php
    //connessione al database con valori ovviamente non veri
    // Includo la connessione al database
    require('config.php');
    //recupero i valori dal form iscriviti
    $cnome = $_POST['nome'];
    $cutenteemail = $_POST['utenteemail'];
    $csesso = $_POST['sesso'];
    $cpassword = $_POST['password'];
    $cdescrizione = $POST['descrizione'];
    // Controllo il Nome Utente
    if(strlen($cnome) < 4 || strlen($cnome) > 12)
    die('Nome Utente troppo corto, o troppo lungo');
    // Controllo la Password
    elseif(strlen($cpassword) < 4 || strlen($cpassword) > 12)
    die('Password troppo corta, o troppo lunga');
    // Controllo l'email
    elseif(!eregi("^[a-z0-9][
    .a-z0-9-]+@([a-z0-9][0-9a-z-]+.)+([a-z]{2,4})", $cutenteemail))
    die('Email non valida');
    // Controllo il nome utente non sia già occupato
    elseif(mysql_num_rows(mysql_query("SELECT nome FROM iscritti WHERE nome = '$cnome' LIMIT 1")) == 1)
    die('Nome Utente non disponibile');
    // Controllo l'indirizzo email non sia già registrato
    elseif(mysql_num_rows(mysql_query("SELECT utenteemail FROM iscritti WHERE utenteemail = '$cutenteemail' LIMIT 1")) == 1)
    die('Questo indirizzo email risulta già registrato ad un altro utente');
    // Registrazione dell'utente nel database
    else
    {

    	// Query per l'inserimento dell'utente nel database
    	$link = mysql_connect("$db_host", "$db_database", "$db_username", "$db_password") or die("Errore connessione: ". mysql_error());  
    

    mysql_select_db('my_italiawebchat') or die("Errore apertura database: " . mysql_error());

    $strsql="INSERT INTO iscritti (nome,utenteemail,sesso,password,descrizione) VALUES ('$cnome','$cutenteemail','$csesso','$cpassword','$cdescrizione')";
    @mysql_query("$strsql",$link) or die("Errore query database: " . mysql_error());
    echo "Grazie per esserti iscritto";

    	// Reindirizzo l'utente ad una pagina di conferma della registrazione
    	header('Location: login.htm');
    	exit;
    }
    

    ?>

    <?
    //percorso della cartella dove mettere i file caricati
    $uploaddir = '/membri/italiawebchat/foto/';

    //Recupero il percorso temporaneo del file
    $userfile_tmp = $_FILES['userfile']['tmp_name'];

    //recupero il nome originale del file caricato
    $userfile_name = $_FILES['userfile']['name'];

    echo "<pre>";
    //copio il file dalla locazione temporanea alla mia cartella upload
    if (move_uploaded_file($userfile_tmp, $uploaddir . $userfile_name))

    ?>

    [/PHP]

    ma nn va...diciamo chenn riesco almeno a uplodare il file sul sever einutile parlare di librerie gd...
    cmq mi ha dato una serie di errori strani...praticamente cosi come ho postato il codice una volta compilata la pagina dell iscrizione eclikato su invia mi appariva sempre la scritta PASSWORD TROPPO CORTA O TROPPO LUNGA..allora ho tolto il controllo sulla password...e nn euscita piu la scritta...però nel database non mi scriveva piu i campi relativi alla password e al sesso dell utente....:?
    allora che ho fatto....ho tolto tutta la parte del controllo sul nome,email,pass e quest altra
    [PHP]
    <?
    //percorso della cartella dove mettere i file caricati
    $uploaddir = '/membri/italiawebchat/foto/';

    //Recupero il percorso temporaneo del file
    $userfile_tmp = $_FILES['userfile']['tmp_name'];

    //recupero il nome originale del file caricato
    $userfile_name = $_FILES['userfile']['name'];

    echo "<pre>";
    //copio il file dalla locazione temporanea alla mia cartella upload
    if (move_uploaded_file($userfile_tmp, $uploaddir . $userfile_name))

    ?>
    [/PHP]
    ma niente..continuava a non scrivermi nel database i campi password e sesso...
    la situazione della scrittura diq ueste 2 campi l ho risolta togliendo del form d i scrizione
    [PHP]<form enctype="multipart/form-data" [/PHP]
    la scritta enctype="multipart/form-data"

    questo significa che in un form su cui ricevo delle informazioni testuali non posso inserire anche l invio delle foto?


  • User Attivo

    :gtsad::gtsad:Ok...ho risolto i problemi relativi al form cosi' facendo..
    Pagina di iscrizione al sito
    iscrizionesito.htm
    [PHP]
    <form method="POST" enctype="multipart/form-data" action="iscr.php">
    <table border="0" cellpadding="0" cellspacing="1" align="center">
    <body>
    <p>Scegli il nick da usare nel sito</p>
    <p><input type="text" name="nome" value=""</p>
    <p>Inserisci qui la tua email</p>
    <p><input type="text" name="utenteemail" value="" size="20"</p>
    <p>Inserisci qui sotto una tua descrizione <p>
    <textarea rows="15" name="descrizione" cols="39"></textarea></p>

    <p> </p>

    <p>Sesso</p>
    <p><input name="sesso" type="radio" value="maschio" checked="checked" />
    Maschile</p>
    <p><input name="sesso" type="radio" value="femmina" checked="checked" />
    Femminile</p>
    <p>Inserisci la tua password</p>
    <p><input type="password" name="password" value="" </p><p>
    <input type="hidden" name="MAX_FILE_SIZE" value="30000000">
    Invia una tua foto: <input name="userfile" type="file">
    <p><p><input type="submit" value="Registrati" </p>
    <p><input type="reset" value="Cancella tutto" </p>
    </form>
    </div>
    </body>
    </html>
    </body>
    </html>
    [/PHP]

    e poi ho creato la pagina su cui punta il form...ovvero iscr.php
    cioè questa
    [PHP]
    <?php

    // Includo la connessione al database
    require('config.php');
    //recupero i valori dal form iscriviti
    $cnome = $_POST['nome'];
    $cutenteemail = $_POST['utenteemail'];
    $csesso = $_POST['sesso'];
    $cpassword = $_POST['password'];
    $cdescrizione = $POST['descrizione'];
    // Controllo il Nome Utente
    if(strlen($cnome) < 4 || strlen($cnome) > 12)
    die('Nome Utente troppo corto, o troppo lungo');
    // Controllo la Password
    elseif(strlen($cpassword) < 4 || strlen($cpassword) > 12)
    die('Password troppo corta, o troppo lunga');
    // Controllo l'email
    elseif(!eregi("^[a-z0-9][
    .a-z0-9-]+@([a-z0-9][0-9a-z-]+.)+([a-z]{2,4})", $cutenteemail))
    die('Email non valida');
    // Controllo il nome utente non sia già occupato
    elseif(mysql_num_rows(mysql_query("SELECT nome FROM iscritti WHERE nome = '$cnome' LIMIT 1")) == 1)
    die('Nome Utente non disponibile');
    // Controllo l'indirizzo email non sia già registrato
    elseif(mysql_num_rows(mysql_query("SELECT utenteemail FROM iscritti WHERE utenteemail = '$cutenteemail' LIMIT 1")) == 1)
    die('Questo indirizzo email risulta già registrato ad un altro utente');
    // Registrazione dell'utente nel database
    else
    {

    	// Query per l'inserimento dell'utente nel database
    	$link = mysql_connect("$db_host", "$db_database", "$db_username", "$db_password") or die("Errore connessione: ". mysql_error());  
    

    mysql_select_db('my_italiawebchat') or die("Errore apertura database: " . mysql_error());

    $strsql="INSERT INTO iscritti (nome,utenteemail,sesso,password,descrizione) VALUES ('$cnome','$cutenteemail','$csesso','$cpassword','$cdescrizione')";
    @mysql_query("$strsql",$link) or die("Errore query database: " . mysql_error());
    print "Grazie per esserti iscritto";

    //qui comincio con la parte relativa alla foto
    $uploaddir = '/membri/italiawebchat/foto/';

    //Recupero il percorso temporaneo del file
    $userfile_tmp = $_FILES['userfile']['tmp_name'];

    //recupero il nome originale del file caricato
    $userfile_name = $_FILES['userfile']['name'];

    print "<pre>";
    //copio il file dalla locazione temporanea alla mia cartella upload
    if (move_uploaded_file($userfile_tmp, $uploaddir . $userfile_name))
    {
    //Se l'operazione è andata a buon fine...
    print "File inviato con successo";

    }
    else
    {
    //Se l'operazione è fallta...
    print "Upload NON valido! ";

    }
    // Reindirizzo l'utente alla pagina del login
    header('Location: login.htm');
    exit;
    }

    ?>
    [/PHP]
    Praticamente ora non mi da nessun errore...i dati testuali vengo tutti trascritti
    nel database e la foto viene uplodata sul server nella cartella foto che ho impostato...
    ora per creare le thumbnails delle foto si debba usare la libreria gd...ma come?
    io nn le ho mai usate...:o


  • ModSenior

    A quel link c'erano link di varie guide, vedi se riesci ad adattarne qualcuno...


  • User Attivo

    @Thedarkita said:

    A quel link c'erano link di varie guide, vedi se riesci ad adattarne qualcuno...
    si..ho letto quella su satgroup
    [PHP]
    //Le funzioni che utilizzeremo sono:

    imageCreateFromJPEG() crea una immagine .jpg.
    imageSX() prende la lunghezza dell’immagine.
    imageSY() prende la larghezza dell’immagine.
    ImageCreateTrueColor() crea un oggetto truecolour image.
    imageCopyResampled() rimpicciolisce l’immagine.

    function resize($source_file, $output_file, $size, $quality)
    {
    //jpeg resizer
    $success = false;
    list($width, $height) = getimagesize($source_file);

    $new_width = intval(($width * $size) / max($width, $height));
    $new_height = intval(($height * $size) / max($width, $height));

    if ( $image_in = imagecreatefromjpeg($source_file) )
    {
    if ( $image_out = imagecreatetruecolor($new_width, $new_height) )
    {
    imagecopyresampled($image_out, $image_in, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
    if ( imagejpeg($image_out, $output_file, $quality) )
    {
    $success = true;
    }
    imagedestroy($image_out);
    }
    imagedestroy($image_in);
    }
    return $success;
    }
    [/PHP]

    questo codice da quello che sn riuscito a capire tira in ballo delle variabili che dovrebbero essere già state impostate in precedenza..
    tipo
    [PHP]$source_file, $output_file, $size, $quality[/PHP]

    questa guida parte già con dei dati che dovrei avere o sapere che io non so...
    non so se mi sono spiegato bene:gtsad:
    su queste ultime 4 variabili dovrei impostare il percorso iniziale ,destinazione della thumbnails,grandezza della thumbnails,e qualità..?:?


  • ModSenior

    Dovresti semplicemente sapere come come si utilizza una funzione, dovresti studiarti prima un pò di teoria, perchè se parti da 0 buttandoti sul codice credo che avrai molte più difficoltà.

    in ogni caso dovresti richiamare la funzione cosi:

    [php]$a = resize('img.jpg', 'img-resize.jpg', 100, 10)[/php]

    dai una lettura all'utilizzo delle funzioni che è meglio, altrimenti la prossima volta che devi fare una cosa del genere sei sempre nei problemi


  • User Attivo

    @Thedarkita said:

    Dovresti semplicemente sapere come come si utilizza una funzione, dovresti studiarti prima un pò di teoria, perchè se parti da 0 buttandoti sul codice credo che avrai molte più difficoltà.

    in ogni caso dovresti richiamare la funzione cosi:

    [php]$a = resize('img.jpg', 'img-resize.jpg', 100, 10)[/php]

    dai una lettura all'utilizzo delle funzioni che è meglio, altrimenti la prossima volta che devi fare una cosa del genere sei sempre nei problemi

    Grazie Thedarkita del consiglio..ho appena letto la guida di giorgio tave sulle funzioni e già ho le idee molto piu' chiare....procedo nella realizzazione:smile5:


  • User Attivo

    @Thedarkita said:

    Dovresti semplicemente sapere come come si utilizza una funzione, dovresti studiarti prima un pò di teoria, perchè se parti da 0 buttandoti sul codice credo che avrai molte più difficoltà.

    in ogni caso dovresti richiamare la funzione cosi:

    [php]$a = resize('img.jpg', 'img-resize.jpg', 100, 10)[/php]

    dai una lettura all'utilizzo delle funzioni che è meglio, altrimenti la prossima volta che devi fare una cosa del genere sei sempre nei problemi

    Ho le idee n po piu chiare sulle funzioni...ma non su quello che fa questo scritp:gtsad: non riesco a capire come inserirlo nella mia pagina..

    poi questa stringa
    [php]$a = resize('img.jpg', 'img-resize.jpg', 100, 10)[/php]

    resize sarebbe il nome della funzione ok...ma i valori nella parentesi?
    non ho capito...ho le idee confusissime..:xle anteprime delle immagini in 100 px vorrei che fossero trasferite in un altra cartella..praticamente ad ogni invio di foto da parte di un utente lo script inserisce il file nella cartella originale e poi dovrebbe crearne un anteprima in un altra cartella:xin questo script non vedo nessun riferimento a cartelle o percorsi..da come ho letto questo crea un immagina da se..none che piglia un immagine da un percorso specificato:(


  • ModSenior

    I valori nelle parentesi sono i valori che passi alla funzione. Sono le basi della funzione, guarda se non le impari non concludi niente perchè più semplice di cosi non saprei come spiegartelo. Poi nella guida cosa sono dovresti averlo letto...

    [php]
    resize($source_file, $output_file, $size, $quality)
    [/php]
    in pratica devi assegnare i valori alle variabili come ho fatto io...


  • User Attivo

    @Thedarkita said:

    I valori nelle parentesi sono i valori che passi alla funzione. Sono le basi della funzione, guarda se non le impari non concludi niente perchè più semplice di cosi non saprei come spiegartelo. Poi nella guida cosa sono dovresti averlo letto...

    [php]
    resize($source_file, $output_file, $size, $quality)
    [/php]
    in pratica devi assegnare i valori alle variabili come ho fatto io...

    ti capisco...purtroppo sono ancora troppo poco sapiente del php :xforse sto cercando il passo piu' lungo della gamba..ma cmq nn mi arrendo...
    ritorniamo al :arrabbiato:

    in quelle 4 variabili all interno di resize devo dargli un valore...cioè le devo dichiarare sennò cosi' come stanno scritte sono nulle credo...mi spiego meglio

    $source_file= qui ovrei inserire il percorso del file originale da cercare
    $output_file= qqui invece dovrei inserire il percorso del file di destinazione
    $size=qui la grandsezza
    $quality=qui la qualità
    giusto?e poi alla fine della funzione
    richiamare il tutto cosi'
    [php]
    resize($source_file, $output_file, $size, $quality)
    [/php]
    ho detto una :eheh:?

    lo scritp completo sarebbe cosi?
    [PHP]

    //Le funzioni che utilizzeremo sono:

    <?
    $source_file= qui ovrei inserire il percorso del file originale da cercare
    $output_file= qqui invece dovrei inserire il percorso del file di destinazione
    $size=qui la grandsezza
    $quality=qui la qualità
    function resize($source_file, $output_file, $size, $quality)
    {
    //jpeg resizer
    $success = false;
    list($width, $height) = getimagesize($source_file);

    $new_width = intval(($width * $size) / max($width, $height));
    $new_height = intval(($height * $size) / max($width, $height));

    if ( $image_in = imagecreatefromjpeg($source_file) )
    {
    if ( $image_out = imagecreatetruecolor($new_width, $new_height) )
    {
    imagecopyresampled($image_out, $image_in, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
    if ( imagejpeg($image_out, $output_file, $quality) )
    {
    $success = true;
    }
    imagedestroy($image_out);
    }
    imagedestroy($image_in);
    }
    return $success;
    } ?>
    [/PHP]


  • ModSenior

    Si una volta fatto dovrebbe crearti la miniatura, il percorso di destinazione deve avere i permessi imposti a 777 altrimenti nn succede nulla


  • User Attivo

    @Thedarkita said:

    Si una volta fatto dovrebbe crearti la miniatura, il percorso di destinazione deve avere i permessi imposti a 777 altrimenti nn succede nulla

    non mi genera nessuna anteprima:(
    questo e il ocdice competo dello script
    [PHP]
    <?
    $source_file='/membri/italiawebchat/foto/';
    $output_file='/membri/italiawebchat/miniature/';
    $size='100';
    $quality='10';

    function resize($source_file, $output_file, $size, $quality)
    {
    //jpeg resizer
    $success = false;
    list($width, $height) = getimagesize($source_file);

    $new_width = intval(($width * $size) / max($width, $height));
    $new_height = intval(($height * $size) / max($width, $height));

    if ( $image_in = imagecreatefromjpeg($source_file) )
    {
    if ( $image_out = imagecreatetruecolor($new_width, $new_height) )
    {
    imagecopyresampled($image_out, $image_in, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
    if ( imagejpeg($image_out, $output_file, $quality) )
    {
    $success = true;
    }
    imagedestroy($image_out);
    }
    imagedestroy($image_in);
    }
    return $success;
    }

    $a = resize('img.jpg', 'img-resize.jpg', 100, 10)

    ?>
    [/PHP]


  • ModSenior

    l'anteprima generata è un file... a schermo non vedi niente

    i permessi sono impostati a 777 per la direcotry dove generi i file?


  • User Attivo

    @Thedarkita said:

    l'anteprima generata è un file... a schermo non vedi niente

    i permessi sono impostati a 777 per la direcotry dove generi i file?

    si..ho impostato i permessi della cartella foto e miniature entrambi a 777...
    però nella cartella miniature non compare nessuna immagine ridimensionata...


  • ModSenior

    Ho provato in locale, e funziona posta il coice che hai messo completo


  • User Attivo

    @Thedarkita said:

    Ho provato in locale, e funziona posta il coice che hai messo completo

    ok..qesto e il codice completo dello script
    [PHP]
    <?
    $source_file='/membri/italiawebchat/foto/';
    $output_file='/membri/italiawebchat/miniature/';
    $size='100';
    $quality='10';

    function resize($source_file, $output_file, $size, $quality)
    {
    //jpeg resizer
    $success = false;
    list($width, $height) = getimagesize($source_file);

    $new_width = intval(($width * $size) / max($width, $height));
    $new_height = intval(($height * $size) / max($width, $height));

    if ( $image_in = imagecreatefromjpeg($source_file) )
    {
    if ( $image_out = imagecreatetruecolor($new_width, $new_height) )
    {
    imagecopyresampled($image_out, $image_in, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
    if ( imagejpeg($image_out, $output_file, $quality) )
    {
    $success = true;
    }
    imagedestroy($image_out);
    }
    imagedestroy($image_in);
    }
    return $success;
    }
    //funzione che richiama il tutto
    $a = resize('img.jpg', 'img-resize.jpg', 100, 10)

    ?>
    [/PHP]
    ho creato questa pagina e l ho insrrita nel ser web,l ho richiamata attravers il browser ma nulla....


  • ModSenior

    Dovrebbe darti un errore di sintassi...

    [php]$a = resize('img.jpg', 'img-resize.jpg', 100, 10);[/php]
    manca il punto e virgola, img.jpg deve essere il nome dell'immagine che vuoi ridimensionare controlla esista sul server


  • User Attivo

    @Thedarkita said:

    Dovrebbe darti un errore di sintassi...

    [php]$a = resize('img.jpg', 'img-resize.jpg', 100, 10);[/php]
    manca il punto e virgola, img.jpg deve essere il nome dell'immagine che vuoi ridimensionare controlla esista sul server

    ah ecco..allora manca un passaggio..cioè questo script nn e completo..praticamente lo script dovrebbe ridimensionares enza che io inserisca il nome dell immagine...praticamente dovrebbe funzionare cosi'..
    tutte le immagini jpeg e gif presenti nella cartella originale foto..di queste ne dovrebbe essere fatta una copia thumbnails nella cartella miniature...cio' però senza che io inserisca il nome dell immagine ....risulta possibile la cosa?

    (ora ridimensiona..era un problema di percorso della foto)
    [PHP]

    $a = resize('foto/maglia.jpg', 'miniature/img-resize.jpg', 100, 10) ;[/PHP]


  • ModSenior

    Ho modificato la funzione per fargli riconoscere gif jpg e png
    adesso genera le anteprime di tutti i file in una cartella.

    [php]<?
    function resize($source_file, $output_file, $size, $quality)
    {
    //jpeg resizer
    $success = false;
    list($width, $height) = getimagesize($source_file);

    $new_width = intval(($width * $size) / max($width, $height));
    $new_height = intval(($height * $size) / max($width, $height));

    // Formato immagine
    $l = strlen($source_file);
    if($source_file[$l-1] == 'f' && $source_file[$l-2] == 'i' && $source_file[$l-3] == 'g')
    $image_in = imagecreatefromgif($source_file);
    elseif($source_file[$l-1] == 'g' && $source_file[$l-2] == 'n' && $source_file[$l-3] == 'p')
    $image_in = imagecreatefrompng($source_file);
    else
    $image_in = imagecreatefromjpeg($source_file);

    if ( $image_out = imagecreatetruecolor($new_width, $new_height) )
    {
    imagecopyresampled($image_out, $image_in, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
    if ( imagejpeg($image_out, $output_file, $quality) )
    {
    $success = true;
    }
    imagedestroy($image_out);
    }
    imagedestroy($image_in);

    return $success;
    }

    // directory immagini
    $img_dir = 'image/';
    $img_anteprime = 'anteprime/';

    // apro la directory
    $handle = opendir($img_dir);

    // Creo un ciclo ed utilizzo readdir per esplorare il contenuto della directory
    while (false !== ($files = readdir($handle)))
    {
    // Genero le anteprime
    if ($files != "." && $files != "..")
    {
    $a = resize($img_dir.$files, $img_anteprime.$files, 100, 10) ;
    }

    }
    ?> [/php]

    NB se all'interno della cartella ci sono file php html o altre estenzioni lo script cercherà di creare un anteprima ugualmente...