2013-06-19 90 views
0

我正在努力調整圖片大小調整圖片上傳與PHP兩次。調整上傳的圖片兩次用PHP

我可以做一個調整大小,但我想做另一個。

這是我的php代碼。 (// 600是第二次調整大小)。

//Redimensionons l'image 
           $source = imagecreatefromjpeg($_FILES['new_up']['tmp_name']); // La photo est la source 

           // Les fonctions imagesx et imagesy renvoient la largeur et la hauteur d'une image 
           $largeur_source = imagesx($source); 
           $hauteur_source = imagesy($source); 
           $largeur_destination = 460; 
            //Regle de trois pour calculer la hauteur; 
           $hauteur_destination = ($hauteur_source * $largeur_destination)/$largeur_source; 

           //600 
           $largeur_destination_600 = 600; 
           $hauteur_destination_600 = ($hauteur_source * $largeur_destination_600)/$largeur_source; 

           // On crée la miniature vide 
           $destination = imagecreatetruecolor($largeur_destination, $hauteur_destination); 

           //600 
           $destination_600 = imagecreatetruecolor($largeur_destination_600, $hauteur_destination_600); 

           // On crée la miniature 
           imagecopyresampled($destination, $source, 0, 0, 0, 0, $largeur_destination, $hauteur_destination, $largeur_source, $hauteur_source); 

           //600 
           imagecopyresampled($destination_600, $source, 0, 0, 0, 0, $largeur_destination, $hauteur_destination, $largeur_source, $hauteur_source); 

           // On edit le tmp_name avec les dimensions miniature 
           imagejpeg($destination,$_FILES['new_up']['tmp_name']); 

           //600 
           imagejpeg($destination_600,$_FILES['new_up']['tmp_name']); 

           //Re-name en md5 
           $filename = basename($_FILES['new_up']['name']); 
           $extension = pathinfo($filename, PATHINFO_EXTENSION); 
           $new  = md5($filename).'.'.$extension; 

           //Enregistrons l'image 
           move_uploaded_file($_FILES['new_up']['tmp_name'], 'uploads/' . $new); 
           echo "L'envoi a bien été effectué !"; 

           //600 
           move_uploaded_file($_FILES['new_up']['tmp_name'], 'uploads/600/' . $new); 
           echo "L'envoi a bien été effectué !"; 

回答

0

沒有太多的檢查你的代碼(所以,可能還有其他的問題),我注意到,你的命令的順序是錯誤的:(!都到同一個文件)保存第一個圖像,然後在第二和然後移動該文件兩次。

它應該做的事是這樣的:

//Re-name en md5 
$filename = basename($_FILES['new_up']['name']); 
$extension = pathinfo($filename, PATHINFO_EXTENSION); 
$new  = md5($filename).'.'.$extension;// On edit le tmp_name avec les dimensions miniature 

imagejpeg($destination, 'uploads/' . $new); 

//600 
imagejpeg($destination_600, 'uploads/600/' . $new); 

所以,僅僅保存在新的文件名;不要覆蓋上傳的文件(只要腳本完成,PHP就會將其刪除)。