0

我正在尝试在上传后调整图片大小,所以我做了这样的代码:

if ($_SERVER['REQUEST_METHOD'] == 'POST' AND isset($_FILES['images'])) {
    $target_folder = 'upload/';
    $nom_image = $_FILES['images']['name'];
    $tmp_image = $_FILES['images']['tmp_name'];
    $upload_image = $target_folder . basename($nom_image);
    //JE RECUPERE L'IMAGE EN JPG :
    $ImageChoisie = imagecreatefromjpeg($tmp_image);
    //JE VERIFIE SA TAILLE :
    $TailleImageChoisie = getimagesize($tmp_image);
    //JE DEFINIS LA NOUVELLE TAILLE DE L'IMAGE QUI SERA INSEREE :
    $NouvelleTailleImage = 200;
    //JE CALCULE LE POURCENTAGE DE REDUCTION :
    $Reduction = ( ($NouvelleTailleImage * 100) / $TailleImageChoisie[0] );
    //JE DEFINIS LA NOUVELLE LARGEUR DE L'IMAGE :
    $NouvelleLargeurImage = ( ($TailleImageChoisie[0] * $Reduction) / 100);
    //ON CREE DONC UN DOUBLE DE L'IMAGE QUI SERA CELLE AFFICHEE :
    $ImageChoisie = imagecreatefromjpeg($tmp_image);
    $NouvelleImage = imagecreatetruecolor($NouvelleTailleImage, $NouvelleLargeurImage) or die("Erreur");
    //PUIS JE COPIE ET JE REECHANTILLONNE L'IMAGE DE DEPART :
    imagecopyresampled($NouvelleImage, $ImageChoisie, 0, 0, 0, 0, $NouvelleLargeurImage, $NouvelleLargeurImage, $TailleImageChoisie[0], $TailleImageChoisie[1]);
    //JE N'AI PLUS QU'A DETRUIRE L'IMAGE CHOISIE AU DEPART QUI NE SERT PLUS A RIEN :
    imagedestroy($ImageChoisie);
    // JE NE GARDE QUE LE NOM DE L'IMAGE SANS SON EXTENSION :
    $NomImageChoisie = explode('.', $nom_image);
    //JE L'APPELLE $NomImageExploitable :
    $NomImageExploitable = '';
    // JE NOMME LE PREMIER TERME DE L'EXPLODE : i
    $i = 0;
    //JE DECOUPE LE TERME NomImage EN AUTANT DE CHAÎNE QU'il Y EN A GRACE A -1, ET LE PREMIER TERME JE L'APPELLE $NomImage[0]
    while ($i < (count($NomImageChoisie) - 1)) {
        $NomImageExploitable = $NomImageChoisie[0];
        $i++;
    }
    //LA PREMIERE CHAINE EST NomImageExploitable, JE LA PASSE EN IMAGEJPEG POUR EN CREER UN FICHIER JPEG AVEC UNE QUALITE DE  100 :
    imagejpeg($NouvelleImage, 'uploads/' . $NomImageExploitable . '.jpg', 100);
    //LE LIEN VERS L'IMAGE EST DONC :
    $Lienimages = 'uploads/' . $NomImageExploitable . '.jpg';

//    if (move_uploaded_file($_FILES['images']['tmp_name'], $upload_image)) {
//        exec('convert ' . $upload_image . ' -resize ' . $newwidth . 'x' . $newheight . '^ ' . $thumbnail);
//        rename($upload_image, $actual);
//    }
}

我使用变量 SuperGlobal $_FILES 但在某些行中它返回给我错误。

warning: basename() expects parameter 1 to be string, array given in C:\wamp\www\cyb2.fr\private_area\plugin-upload\upload.php on line 19

和这里一样 :

Warning: imagecreatefromjpeg() expects parameter 1 to be string, array given in C:\wamp\www\cyb2.fr\private_area\plugin-upload\upload.php on line 21

任何帮助将不胜感激

4

1 回答 1

2

$_FILES['images']['name'] 是一个数组,你必须在循环中使用 $_FILES['images']['name'][$i] ,其中 $i = 0 到 $i = count ($_FILES['images']['name']) - 1

于 2013-10-27T17:01:20.660 回答