[PHP] Problema per ridurre delle immagini e spostare i files in cartelle

Delemir78

Nuovo Utente
12 Ott 2017
3
0
1
46
Ciao a tutti,

ho un problema con un codice che dovrebbe fare le seguenti cose:

  • leggere i nomi dei files nella cartella "upload"
  • creare una copia ridimensionata del files e inserirla nella cartella "anteprime"
  • copiare il file originale dalla cartella "upload" alla cartella "originali"
  • cancellare il file originale dalla cartella "upload"
Lo script non funziona, legge il nome del files, crea un anteprima nera e non mi sposta il file originale.

Qualcuno può aiutarmi?


Grazie mille

Ecco il codice:


<?php

$jpg = glob('upload/*.jpg');

foreach ($jpg as $filename) {

$nomefile = substr($filename, 7);

echo $nomefile;


// CREO ANTEPRIMA A BASSA RISOLUZIONE -------------------------------------

// Ottengo le informazioni sull'immagine originale

list ($width, $height, $type, $attr) = getimagesize ($_SERVER['DOCUMENT_ROOT'] . '/upload/$nomefile');

// Creo la versione 400*223 dell'immagine

$thumb = imagecreatetruecolor (400, 223);

$source = imagecreatefromjpeg ($_SERVER['DOCUMENT_ROOT'] . '/upload/$nomefile');

imagecopyresized ($thumb, $source, 0, 0, 0, 0, 400, 223, $width, $height);

// Salvo l'immagine ridimensionata

imagejpeg ($thumb, $_SERVER['DOCUMENT_ROOT'] . "/anteprime/$nomefile", 75);


// SPOSTO L'ORIGINALE NELLA CARTALLA APPOSITA -------------------------------------

sleep (1);

$originale = '/upload/$nomefile';

$copia = '/originali/$nomefile';

move_uploaded_file ($originale,$copia);


// CANCELLO IL FILE NELLA CARTELLA UPLOAD -------------------------------------

sleep (1);

unlink ('/upload/$nomefile');

}

?>
 
i percorsi sono diversi, quale è quello giusto o quali ..... ?
PHP:
$jpg = glob('upload/*.jpg');

 list ($width, $height, $type, $attr) = getimagesize ($_SERVER['DOCUMENT_ROOT'] . '/upload/$nomefile');

 $source = imagecreatefromjpeg ($_SERVER['DOCUMENT_ROOT'] . '/upload/$nomefile');

 imagejpeg ($thumb, $_SERVER['DOCUMENT_ROOT'] . "/anteprime/$nomefile", 75);

 $originale = '/upload/$nomefile';

 $copia = '/originali/$nomefile';

 unlink ('/upload/$nomefile');
 
Avevo previsto 3 cartelle:

- UPLOAD, dove arrivano i files
- ANTEPRIME, dove vengono copiate le immagini a bassa risoluzione una volta create
- ORIGINALI, dove vengono spostati i files originali dalla cartella upload
 
i percorsi sono diversi, quale è quello giusto o quali ..... ?

Però l'anteprima nella cartella corretta me la crea ma è tutta nera!

Il comando copy invece non mi funziona, l'immagine originale resta nella cartella UPLOAD invece che finire in ORIGINALI
 
ciao
ti giro il codice corretto in alcuni punti (testato da me funziona)

errori: se usi apici singoli con '$nomeFile' non viene risolto
ti ho cambiato move_uploaded_file con rename

quando effettui il resize sull'immagine considera che potresti alterare l'aspect-ratio



PHP:
<?php

$jpg = glob('upload/*.jpg');

foreach ($jpg as $filename) {

$nomefile = substr($filename, 7);

echo $nomefile;


// CREO ANTEPRIMA A BASSA RISOLUZIONE -------------------------------------

// Ottengo le informazioni sull'immagine originale

list ($width, $height, $type, $attr) = getimagesize ($_SERVER['DOCUMENT_ROOT'] . '/upload/'.$nomefile);

// Creo la versione 400*223 dell'immagine

$thumb = imagecreatetruecolor (400, 223);

$source = imagecreatefromjpeg($_SERVER['DOCUMENT_ROOT'] . '/upload/'.$nomefile);

imagecopyresized ($thumb, $source, 0, 0, 0, 0, 400, 223, $width, $height);

// Salvo l'immagine ridimensionata

imagejpeg ($thumb, $_SERVER['DOCUMENT_ROOT'] . "/anteprime/$nomefile", 75);


// SPOSTO L'ORIGINALE NELLA CARTALLA APPOSITA -------------------------------------

sleep (1);

$originale = $_SERVER['DOCUMENT_ROOT'].'/upload/'.$nomefile;
$copia =$_SERVER['DOCUMENT_ROOT']. '/originali/'.$nomefile;

rename($originale,$copia);


// CANCELLO IL FILE NELLA CARTELLA UPLOAD -------------------------------------

sleep (1);

unlink ('/upload/$nomefile');

}

?>
 

Discussioni simili