在php上传后调整图片大小

时间:2013-10-27 16:47:53

标签: php image resize

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

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

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:2)

$ _ FILES [&#39; images&#39;] [&#39; name&#39;]是一个数组,你必须使用$ _FILES [&#39; images&#39;] [&#39;名字&#39;] [$ i]在一个循环中,$ i = 0到$ i = count($ _ FILES [&#39; images&#39;] [&#39; name&#39;]) - 1 < / p>