Tom's Guide > Forum > Programmation > Creation images php

Creation images php

Forum Programmation : Creation images php

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Bonjour,

je suis en train de créer une partie administration pour une galerie, permettant d'inserer des images png et jpg|jpeg en les redimmenssionnant si celles ci sont trop grandes, suivi d'une creation de miniature.

Le script fonctionne presque en entier. La où ca coince c'est lorsque l'image est redimmensionnée (ca c'est ok), au moment de la generation de la miniature celle ci est toute noir. J'obtient comme erreur :

"<gras>Warning</gras>: imagecreatefromjpeg(1237221523.jpg) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in C:/wamp..."

Voici le code concerné :

Code php :

if ($_FILES['mon_image']['error'] ==0){
if ($_FILES['mon_image']['size'] < $_POST['MAX_FILE_SIZE']){
$extensions_valides = array( 'jpg' , 'jpeg' , 'png' );
//1. strrchr renvoie l'extension avec le .
//2. substr(chaine,1) ignore le premier caractère de chaine
//3. strtolower met l'extension en minuscule
$extension_upload = strtolower( substr( strrchr($_FILES['mon_image']['name'], '.') ,1) );
if ( in_array($extension_upload,$extensions_valides) ){
$image_sizes = getimagesize($_FILES['mon_image']['tmp_name']);
if ($image_sizes[0] < $maxwidth OR $image_sizes[1] < $maxheight){
$largeur_image= $image_sizes[0];
$hauteur_image= $image_sizes[1];

$confirmation = "<p class=\"resultat_test\">Résultat Test : Taille du fichier correcte<br/>Extension du fichier correcte<br/> Dimension de l'image correct<br/> Création de la miniature réussi<br/> <u>Transfert réussi</u><br/><br/><a href=\"javascript:history.go(-1)\">Ajouter une nouvelle oeuvre...</a><br />
<a href=\"Index_.html\" title=\"Accueil\">Accueil</a></p>";

if(!empty($_POST['Nom_oeuvre']) and !empty($_POST['Taille_oeuvre']) and ($largeur_image > 800) and ($hauteur_image >600)){
$nom_image = ($_FILES['mon_image']['tmp_name']);
$nom = redimensionnement($largeur_image,$hauteur_image,$extension_upload,$nom_image);
create_miniatures($largeur,$hauteur,$extension_upload,$nom);
insert_oeuvre($extension_upload,$largeur_image,$hauteur_image);
echo $confirmation;}

elseif (!empty($_POST['Nom_oeuvre']) and !empty($_POST['Taille_oeuvre'])) {
$nom=time();
$nom="upload/{$nom}.{$extension_upload}";
$resultat = move_uploaded_file($_FILES['mon_image']['tmp_name'],$nom);<couleur nom="bleu"></couleur>
if ($resultat){
//Creation de la miniature
create_miniatures($largeur,$hauteur,$extension_upload,$nom);
insert_oeuvre($extension_upload,$largeur_image,$hauteur_image);
echo $confirmation;

...


Fonction qui redimmenssionne l'image :
[php]
function redimensionnement ($largeur_image,$hauteur_image,$extension_upload,$nom_image){
if (preg_match("#jpg|jpeg|JPG|JPEG#" ,$extension_upload)){
$source = imagecreatefromjpeg ($nom_image);}
else $source = imagecreatefrompng ($nom_image);

$Nouvelle_largeur = 800;
$Nouvelle_hauteur = (($Nouvelle_largeur/$largeur_image) * $hauteur_image);
$Nouvelle_image = imagecreatetruecolor($Nouvelle_largeur,$Nouvelle_hauteur) or die ('Erreur');

imagecopyresampled ($Nouvelle_image,$source,0,0,0,0,$Nouvelle_largeur,$Nouvelle_hauteur,$largeur_image,$hauteur_image);
$nom_image = time();
$nom_image = $nom_image . "." . $extension_upload;

if ($extension_upload == 'jpe?g'){
imagejpeg($Nouvelle_image, "upload/" . $nom_image);}
else imagepng($Nouvelle_image, "upload/" . $nom_image);

imagedestroy($Nouvelle_image);
imagedestroy($source);
return $nom_image;
}
[/php]

Enfin la fonction qui creer la miniature :
[php]
function create_miniatures($largeur,$hauteur,$extension_upload,$nom){
if (preg_match("#jpg|jpeg|JPG|JPEG#" ,$extension_upload)){
$extension = 'jpg';
$source = imagecreatefromjpeg ($nom);
}
else {
$extension = 'png';
$source = imagecreatefrompng ($nom);
}
if (preg_match("#upload#", $nom)){
$nom = substr($nom,7);}

$destination = imagecreatetruecolor($largeur,$hauteur);

$lageur_source = imagesx($source);
$hauteur_source = imagesy($source);
$largeur_destination = imagesx($destination);
$hauteur_destination = imagesy($destination);
//creer la miniature
imagecopyresampled ($destination, $source, 0,0,0,0, $largeur_destination,$hauteur_destination,$lageur_source,$hauteur_source);
//On enregistre la miniature dans le dossier miniatures
if ($extension == 'jpg') imagejpeg($destination, "upload/Miniatures/" . $nom);
else imagepng($destination, "upload/Miniatures/" . $nom);
return $extension;
}
[/php]

Voila, je suis plutot debutant et il y a surement pas mal de modifications à faire mais j'aimerais bien que la creation de miniature lorsqu'il y a redimensionnement ne s'affiche pas en noir.

Par contre si l'image à la taille adequate le tout fonctionne bien.

SI vous avez des idées, je vous en remercie d'avance.

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.
Tom's Guide > Forum > Programmation > Creation images php
Aller à :

Il y a 2022 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens