我正在制作脚本,用两次调整用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 :(得分: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会在脚本完成后立即将其删除。)