Problème : redimensionnement image

Eléphanteau du PHP | 28 Messages

15 juin 2010, 16:16

Bonjour,

Vous avez du lire mon code précédent (php-avance/envoie-image-verification-de ... 53927.html).

Seul problème, c'est que certains internautes envoient des images trop grandes pour ma fenêtre, et pour une meilleure visibilité, j'aimerai que les images soient à la bonne taille.

J'ai trouvé un code php qui me plait, mais j'aimerais l'intégrer à mon code de base. Cependant, si vous avez une fonction simple à rajouter (ou plusieurs) pour redimensionner une image (max 200 pixels largeur ou hauteur) à intégrer directement dans mon code, je suis preneuse.

Voilà donc les différents codes :

=> Le code que j'aimerai utilisé (redimensionner une page : max 200 pixels largeur ou hauteur)
<?php
// Le fichier
$filename = 'test.jpg';

// Définition de la largeur et de la hauteur maximale
$width = 200;
$height = 200;

// Content type
header('Content-type: image/jpeg');

// Cacul des nouvelles dimensions
list($width_orig, $height_orig) = getimagesize($filename);

$ratio_orig = $width_orig/$height_orig;

if ($width/$height > $ratio_orig) {
   $width = $height*$ratio_orig;
} else {
   $height = $width/$ratio_orig;
}

// Redimensionnement
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);

// Affichage
imagejpeg($image_p, null, 100);
?>
=> Mon code de base
<?php
// Testons si le fichier a bien été envoyé et s'il n'y a pas d'erreur
if (isset($_FILES['monfichier']) AND $_FILES['monfichier']['error'] == 0)
{
        // Testons si le fichier n'est pas trop gros
        if ($_FILES['monfichier']['size'] <= 1000000)
        {
                // Testons si l'extension est autorisée
                $infosfichier = pathinfo($_FILES['monfichier']['name']);
                $extension_upload = $infosfichier['extension'];
                $extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');
                if (in_array($extension_upload, $extensions_autorisees))
                {
                        // On peut valider le fichier et le stocker définitivement
                        move_uploaded_file($_FILES['monfichier']['tmp_name'], 'uploads/' . basename($_FILES['monfichier']['name']));
                        echo "L'envoi a bien été effectué !";
                }
        }
}
?>
Dois-je intégrer le premier code direct dans le deuxième ? Ca parait trop simple ...
SI vous pouviez m'envoyer le code final fini ... ce serait trés gentil :) (en respectant mon code de base bien sûr)

S'il vous plait, aidez-moi :( C'est assez urgent ...

Merci les amis !
"En informatique, passer de l’évident à l’utile est une définition vivante du mot « frustration »" [Alan Perlis]

ViPHP
AB
ViPHP | 5818 Messages

15 juin 2010, 17:47

C'est pas vraiment le bon forum pour demander des scripts tout faits. Il y a phpclasses, phpsources etc. pour ça.

On en donne quand on en a un sous la main mais ici c'est plutôt un forum d'entraide pour apprendre et progresser.

Déjà dans ton code d'upload il manque la gestion de certaines erreurs :

- si le fichier dépasse la taille de "upload_max_filesize" autorisée sur le serveur
- si le fichier dépasse la taille de "post_max_size" autorisée sur le serveur

Il manque aussi un contrôle du nom des fichiers pour que ceux-ci soient valident pour le serveur : il faut éventuellement enlever les espaces, les caractères accentués ou les caractères spéciaux.

Il manque aussi la vérification d'un fichier de même nom sur le serveur, pour éviter d'écraser un fichier déjà existant... et dans ce cas un simple message d'avertissement ou un renommage automatique du fichier.

Tout ça est expliqué ici Il y a même un script d'upload complet.


Ensuite ton code de redimensionnement est fait pour afficher une image redimensionnée, pas pour l'enregistrer dans un répertoire. Entre autre il faudra enlever le header('Content-type: image/jpeg'); et renseigner correctement les paramètres de la fonction imagejpeg()

Eléphanteau du PHP | 28 Messages

15 juin 2010, 18:01

Merci beaucoup, j'avais pas vu l'autre page =S

++
"En informatique, passer de l’évident à l’utile est une définition vivante du mot « frustration »" [Alan Perlis]