0

PHPでアップロードされた画像のサイズを2回変更するスクリプトに取り組んでいます。

サイズ変更は 1 回できますが、もう 1 回やりたいと思います。

これが私のphpコードです。(//600 は 2 回目のサイズ変更用です)。

//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é !";
4

1 に答える 1

0

コードをあまりチェックせずに (そのため、他の問題がある可能性があります)、コマンドの順序が間違っていることに気付きました: 最初の画像を保存し、次に 2 番目の画像を保存し (両方とも同じファイルに保存します!)、ファイルを 2 回移動します。

次のように行う必要があります。

//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 はスクリプトが完了するとすぐにファイルを削除します)。

于 2013-06-19T13:46:00.537 に答える