使用php调整上传图片大小两次

时间:2013-06-19 13:36:27

标签: php gd tmp

我正在制作脚本,用两次调整用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é !";

1 个答案:

答案 0 :(得分: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会在脚本完成后立即将其删除。)