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