Visualizzazione risultati 1 fino 17 di 17

Discussione: resize immagine php: piccolo problema con imagejpeg

  1. #1
    Guest

    Predefinito resize immagine php: piccolo problema con imagejpeg

    Buongiorno a tutti... volevo chiedervi se è possibile inserire una variabile PHP dentro la funzione imagejpeg.
    Esempio:
    Codice PHP:
    $filename3 = pathinfo($_FILES['photo']['name'], PATHINFO_FILENAME);
    $imm=$filename3."2".".jpg";

    echo
    '<script type="text/javascript">alert("'.$imm.'");</script>';
    imagejpeg($destination, $imm, 100);
    In questo caso vorrei che l'immagine mandata in output venisse chiamata con il contenuto della variabile $imm...ma purtroppo non so come fare...
    Cosa devo modificare?
    Grazie mille!
    Ultima modifica di tuttitrucchiInvitaAmici : 18-06-2017 alle ore 13.01.49

  2. #2
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Con quel codice "esporti" l'immagine $destination (intesa come image resource di PHP GD) nel percorso dato da $img, in formato JPEG con qualità 100. Sembra già ciò che intendevi fare, no?
    Se non funziona (ovvero non viene salvata l'immagine nel percorso desiderato), è probabile che ci siano errori a monte.

  3. #3
    Guest

    Predefinito

    non mi salva l'immagine.
    Codice PHP:
    $filename = $_FILES["photo"]["name"];
    Codice PHP:
    $source = imagecreatefrompng($filename);
    list(
    $width, $height) = getimagesize($filename);

    $newwidth = $width/5;
    $newheight = $height/5;

    $destination = imagecreatetruecolor($newwidth, $newheight);
    imagecopyresampled($destination, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
    $filename3 = pathinfo($_FILES['photo']['name'], PATHINFO_FILENAME);
    $imm=$filename3."2".".png";
    echo
    '<script type="text/javascript">alert("'.$imm.'");</script>';
    imagejpeg($destination, $imm, 100);

  4. #4
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Il procedimento è complessivamente corretto, probabilmente si verifica qualche errore in uno (o più) dei passi intermedi per cui la procedura non termina correttamente.

    Aggiungi un
    Codice PHP:
    error_reporting(E_ALL);
    all'inizio del codice in modo da mostrare tutti quali errori si verificano.

  5. #5
    Guest

    Predefinito

    Non mi riporta alcun errore

  6. #6
    Guest

    Predefinito

    OH SIGNORE...colpa mia...il percorso in cui salva l'immagine è nella cartella stessa.

  7. #7
    Guest

    Predefinito

    ok..ho fatto alcune modifiche al percorso, pero non funziona lo stesso:
    Codice PHP:
    $filename3 = pathinfo($_FILES['photo']['name'], PATHINFO_FILENAME);
    $imm=$filename3."2".".jpg";
    $immg="../imageupload/$imm";


    echo
    '<script type="text/javascript">alert("'.$immg.'");</script>';
    imagejpeg($destination, $immg, 100);

  8. #8
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    OH SIGNORE...colpa mia...il percorso in cui salva l'immagine è nella cartella stessa.
    Non è un problema, nulla vieta che la cartella sia la stessa.
    Hai provato a controllare il valore restituito da imagejpeg? Restituisce false in caso di errore:
    Codice PHP:
    $result = imagejpeg($destination, $immg, 100);
    if (
    $result === false) {
    echo
    "Errore durante l'esportazione.";
    }

  9. #9
    Guest

    Predefinito

    ho fatto come hai detto:
    Codice PHP:
    $result = imagejpeg($destination, $immg, 100);
    if (
    $result === false) {
    echo
    '<script type="text/javascript">alert("ERRORE DURANTE L ESPORTAZIONE");</script>';
    }
    else{
    echo
    '<script type="text/javascript">alert("TUTTO OK");</script>';
    }
    ma..mi restituisce TUTTO OK

  10. #10
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Ho riletto il codice. Sei sicuro di questa cosa:
    Codice PHP:
    $filename = $_FILES["photo"]["name"];

    $source = imagecreatefrompng($filename);
    $filename ottenuto in quel modo è il nome del file, ad esempio foto.jpg, mentre imagecreatefromjpg ha bisogno del percorso del file dell'immagine, verosimilmente qualcosa come $_FILES['photo']['tmp_name'].

  11. #11
    Guest

    Predefinito

    Ciao io ho provato a fare come mi hai detto:
    Codice PHP:
    $percorso="../imageupload/$filename";
    echo
    '<script type="text/javascript">alert("'.$percorso.'");</script>';
    if (
    preg_match('/(\.png)$/i', $filename)) {
    error_reporting(E_ALL);
    $source = imagecreatefrompng($percorso);
    list(
    $width, $height) = getimagesize($percorso);

    $newwidth = $width/5;
    $newheight = $height/5;

    $destination = imagecreatetruecolor($newwidth, $newheight);
    imagecopyresampled($destination, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
    $ris="../imageupload/image/$filename";
    echo
    '<script type="text/javascript">alert("'.$ris.'");</script>';
    imagejpeg($destination, $ris, 100);


    }
    Ma non funziona comunque
    Ultima modifica di tuttitrucchiInvitaAmici : 19-06-2017 alle ore 09.39.22

  12. #12
    Guest

    Predefinito

    OKAY HO RISOLTO!
    Bastava inserire il percorso completo del server (compreso la Root):
    Codice PHP:
    $percorso= $_SERVER['DOCUMENT_ROOT'] . "$dir" .$filename;
    echo
    '<script type="text/javascript">alert("'.$percorso.'");</script>';
    if (
    preg_match('/(\.png)$/i', $filename)) {
    error_reporting(E_ALL);
    $source = imagecreatefrompng($percorso);
    list(
    $width, $height) = getimagesize($percorso);

    $newwidth = $width/5;
    $newheight = $height/5;

    $dir2= "/imageupload/image/";
    $destination = imagecreatetruecolor($newwidth, $newheight);
    imagecopyresampled($destination, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
    $ris=$_SERVER['DOCUMENT_ROOT'] . "$dir2" .$filename;
    echo
    '<script type="text/javascript">alert("'.$ris.'");</script>';
    imagejpeg($destination, $ris, 100);


    }
    Anche se non capisco come mai necessita del percorso completo
    Grazie di tutto mzanella!

  13. #13
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    No che non hai fatto come ho detto !

    Hai creato una variabile $percorso che punta ad una posizione arbitraria nel filesystem, mentre ti avevo indicato di usare il percorso effettivo del file appena caricato, ottenuto tramite $_FILES['photo']['tmp_name'] (a meno che l'immagine non sia già stata trasferita tramite move_uploaded_file).

  14. #14
    Guest

    Predefinito

    Infatti...prima l immagine viene inviata al server e spostata nella cartella imageupload e dopo effetua il resize

  15. #15
    Guest

    Predefinito

    Dici che sia piu veloce il tuo metodo?o la velocità di caricamento è la stessa?

  16. #16
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Chiaro!
    Il problema era il percorso allora. Sicuramente non necessita del percorso completo, probabilmente quello relativo di prima aveva qualcosa di sbagliato.

    La prestazioni sono le stesse in entrambi i casi.
    Ultima modifica di mzanella : 19-06-2017 alle ore 09.55.28

  17. #17
    Guest

    Predefinito

    mmmm.. non credo:
    Codice PHP:
    $dir= "/imageupload/";
    Codice PHP:
    $location = $_SERVER['DOCUMENT_ROOT'] . "$dir" .$post_image;
    move_uploaded_file($image_tmp,$location);

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •