Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Strano problema con le funzioni php per il crop e upload di immagini

    Salve a tutti sto utilizzando il seguente script php creato da me mescolando mio codice con altro codice trovato in rete per creare una funzione di ridimensionamento crop e upload di immagini jpg.
    Lo script il più delle volte funziona perfettamente senza nessun comportamento anomalo , in altri casi è come se si interrompesse però continuando a funzionare.
    Probabilmente le frasi prima risulteranno un po vaghe cerco di spiegare come funziona lo script.

    Lo script si attiva tramite comando post proveniente da una pagina in cui è possibile selezionare un area di un immagine e questa selezione viene inviata alla pagina in cui è presente lo script che oltre "$_FILE" prende come dati in entrata due cordinate x ,y e la dimensione in altezza e larghezza dell'area selezionata per fare il successivo crop dell'immagine.

    codice:
    if(isset($_FILES['file'])){
      if(isset($_POST['chekDelImg']) and $_POST['chekDelImg']=='1' and $_POST['pathPdt']!=""){
        $delPathF='../../imgPdt/'.$_POST['pathPdt'];         $delPathM='../../imgPdt/min_'.$_POST['pathPdt'];
        unlink($delPathF);
        unlink($delPathM);
      }
      $file = $_FILES['file'];
      $inCooY=$_POST['cooY'];         $inCooX=$_POST['cooX'];       $inCropW=$_POST['dataWidth'];       $inCropH=$_POST['dataHeight'];
      if($file['error'] == UPLOAD_ERR_OK and is_uploaded_file($file['tmp_name'])){
        $stripName=$string = preg_replace('/\s+/', '_', $nmPdt);
        $path=UPLOAD_DIR.$file['name'];
        $pathCrop=UPLOAD_DIR."crop_".$file['name'];
        $pathCropThumb=UPLOAD_DIR."imgPdt_".$stripName.".jpg";
        $pathCropThumb2=UPLOAD_DIR."min_imgPdt_".$stripName.".jpg";
        move_uploaded_file($file['tmp_name'], UPLOAD_DIR.$file['name']);
        $formato=exif_imagetype($path);
        if($formato!==2){
        echo "Attenzione controlla che il file che stai caricando sia un'immagine in formato jpg o jpeg.<br>Tutti gli altri formati non saranno accettati.";}
        else {
          $handle = imagecreatefromjpeg($path);
          $size = min(imagesx($handle), imagesy($handle));
    
    
          // ______IN QUESTO PUNTO SI BLOCCA______________
    
    
          echo '<div style="width:100%; height:100%;position:fixed; ">
          <p style="margin:5em auto; text-align:center;"> si è verificato un piccolo errore di comunicazione con il server cliccare su riprova per fare un nuovo tentativo</p>
          <button style="margin:0em auto; width:10em; height:4em; " onclick="location.reload();">Contatta il server</button>
          </div>';
          $imageCropped = imagecrop($handle, ['x' => $inCooX,'y' => $inCooY,'width' => $inCropW,'height' => $inCropH]);
          imagejpeg($imageCropped,$pathCrop,90);
          imagedestroy($handle);
          // Ottengo le informazioni sull'immagine originale
          list($width, $height, $type, $attr) = getimagesize($pathCrop);
          // Creo la versione 120*90 dell'immagine (thumbnail)
          $thumb = imagecreatetruecolor(1024, 768);      $source = imagecreatefromjpeg($pathCrop);
          imagecopyresized($thumb, $source, 0, 0, 0, 0, 1024, 768, $width, $height);
          // Salvo l'immagine ridimensionata
          imagejpeg($thumb, $pathCropThumb, 100);    imagedestroy($source);
          list($width, $height, $type, $attr) = getimagesize($pathCropThumb);
          // Creo la versione 120*90 dell'immagine (thumbnail)
          $thumbA = imagecreatetruecolor(666.666, 500);     $sourceA = imagecreatefromjpeg($pathCropThumb);
          imagecopyresized($thumbA, $sourceA, 0, 0, 0, 0, 666.666, 500, $width, $height);
          // Salvo l'immagine ridimensionata
          imagejpeg($thumbA, $pathCropThumb2, 75);
          imagedestroy($sourceA);
          unlink($path);
          unlink($pathCrop);
        }//fine formato img
      }//fine FILE ERRORS
    }//fine FILES

    Come dicevo prima il codice funziona perfettamente il più delle volte, ma in rari casi lo script è come se si bloccasse nel punto segnato nel codice con il commento 'IN QUESTO PUNTO SI BLOCCA' e succesivamente ho messo un echo con un avviso di problema server . Il punto veramente strano è che anche quando si blocca in realtà lo script ha funzionato , caricando l'immagine croppata correttamente e inserendo poi altre informazioni in alcune tabelle sql senza problemi.
    Il fatto che lo script si blocchi in quel punto non permette il corretto reinderizzamento alla fine dell'operazione.
    Per caso qualcuno ha qualche idea su cosa stia sbagliando?
    Ciao Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2019
    residenza
    Sicilia
    Messaggi
    86
    Ciao,

    dovresti indicare l'errore che ritorna lo script. Controlla i log di PHP.

  3. #3
    Cioa ho guardato il log errori di aruba e non mi mostra nessun errore relativo all'operazione di crop

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2019
    residenza
    Sicilia
    Messaggi
    86
    Beh se sei su Aruba già non è cosa buona...

    Ad ogni modo spiega meglio cosa intendi per script che si blocca: la pagina prosegue il caricamento finché non si blocca? La pagina ritorna una schermata bianca? Hai attivato la visualizzazione degli errori?

    Codice PHP:
    error_reporting(E_ALL);
    ini_set("display_errors"1); 

    Potrebbe anche trattarsi di un problema di memoria. Le funzioni che lavorano sulle immagini richiedono parecchie risorse e nel caso della generazione o del cropping dell'immagine è possibile che la memoria allocata (di default è 128MB) venga saturata con errore fatale "allowed memory size of...

  5. #5
    Ciao grazie per la risposta e scusa se sono sparito ma sono andato via per lavoro, domani provo ad aggiungere le stringhe per visualizzare i possibili errori , intanto ti posso subito dire tutte le immagini che ho pravato sono tutte di piccole dimensioni 250kb al massimo (1024px768px) e l'anomalia appariva anche quando le immagini erano sempre le stesse e la maggior parte dei casi funzionava tutto a dovere.
    Comunque per chiarire i punti :
    La posizione in cui c'è "in questo punto si blocca " come commento e succesivamente il comando echo è il punto in cu si blocca e l'ho scoperto dopo diversi tentativi in cui provavo a mettere "echo" .
    il codice della pagina procede con l'inserimento dei dati in un database e dopo un reinderizzamento con il comando Header quando tutto funziona a dovere.
    La cosa che mi confonde di più le idee è che quando l'errore si presenta e non procede con il reinderizzamento alla pagina scelta (ultimo comando presente) comunque carica l'immagine croppata e ridimensionata sul server e inserisce il link nel db tutto correttamente però è come se si bloccasse.

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.