Redimensionner une image en php

Fermé
nanard - 14 oct. 2014 à 20:00
 nanard - 16 oct. 2014 à 14:59
Bonjour,



je n'arrive pas à utiliser les fonctione imagecreatefromjpeg et les autres autours qui permettent de redimensionner une image.

Quand j'envoi mon formulaire, j'aimerai que la photo choisie soit envoyé dans deux dossier "img" et "min" qui correspondent au dossier images originelles et images miniatures.

Aucun soucis elle s'envoie bien dans le dossier "img" mais la photo miniature, j'arrive pas à la redimensionner.

Voici mon code bien modeste de ce que j' ai fait, tout fonctionne sauf la copie et le redimensionnement de la photo pour le dossier "min".

<?php
session_start();
include ('config.php');
mysql_query("SET NAMES 'utf8'");
$titre = $_POST['titre'];
$auteur = $_POST['auteur'];
$annee = $_POST['annee'];
$resume = $_POST['resume'];
$photo = $_FILES['photo'];


$extensions = array('.png', '.gif', '.jpg', '.jpeg');

$photo = !empty($_FILES['photo']['name']) ? time()."_".$_FILES['photo']['name'] : '';


$extension = strrchr($_FILES['photo']['name'], '.');
$dossier = '/home/monsite/www/biblix/img/';



//On formate le nom du fichier ici...
$photo = strtr($photo,
'Àà Ã'ÃfÃ"Ã...Ã#ÈÉÃSÃ<ÃOEà ÃZà Ã'Ã"Ã"Ã*Ã-Ã(TM)ÃsÃ>Ãoeà à áâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$photo = preg_replace('/([^.a-z0-9]+)/i', '-', $photo);
move_uploaded_file($_FILES['photo']['tmp_name'], $dossier . $photo); //Si la fonction renvoie TRUE, c'est que ça a fonctionné...


mysql_query("INSERT INTO biblix VALUES('', '$titre', '$auteur', '$annee', '$photo', '$photo')")or die(mysql_error());


mysql_close();
?>
<meta http-equiv="Refresh" content="0;URL=add.php" />

A voir également:

3 réponses

Bonjour,

Je ne vois pas de fonction imagecreatefromjpeg dans ton code ou ai je mal vu.

Sinon voici un bon tuto pour redimensionner les image
http://fr.openclassrooms.com/informatique/cours/gd-redimensionner-une-image-sans-la-deformer
0
Bonjour et merci d'avoir repondu. Oui, j' ai d'ailleurs suivi ce tutoriel du site du zero.

Mais je me mélange tout, j'ai donc enlevé imagecreatejpeg et totu ce qui ne fonctionnait pas de mon bout de code, bref je n'ai rien réussi.

J'ai vraiment du mal sur cette partie et si vous pouviez m'aider avec un exemple minimal ca serait sympa, pour me mettre sur la voix.

cdt
0
Je me suis basé sur le lien suivant, a priori ca ne fonctionne pas:

https://forums.commentcamarche.net/forum/affich-12521502-redimensionner-une-image-lors-d-un-upload



<?php
session_start();
include ('config.php');
mysql_query("SET NAMES 'utf8'");
$titre = $_POST['titre'];
$auteur = $_POST['auteur'];
$annee = $_POST['annee'];
$resume = $_POST['resume'];
$photo = $_FILES['photo'];


$extensions = array('.png', '.gif', '.jpg', '.jpeg');

$photo = !empty($_FILES['photo']['name']) ? time()."_".$_FILES['photo']['name'] : '';


$extension = strrchr($_FILES['photo']['name'], '.');
$dossier = '/home/graffx/www/biblix/img/';



//On formate le nom du fichier ici...
$photo = strtr($photo,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$photo = preg_replace('/([^.a-z0-9]+)/i', '-', $photo);
move_uploaded_file($_FILES['photo']['tmp_name'], $dossier . $photo); //Si la fonction renvoie TRUE, c'est que ça a fonctionné...








resize_clone("/home/monsite/www/biblix/min/", .$photo.);

function resize_clone($path, $file)
{
list($width, $height, $type, $attr) = getimagesize($path.$file);
$ratio = $height / $width;
if ($height > 500 OR $width > 500)
{
if($ratio <= 1)
{
$x = 500;
$y = 500*$ratio;
}
else
{
$y = 500;
$x = 500*(1/$ratio);
}
}
else
{
if($ratio <= 1)
{
$x = $width;
$y = $width*$ratio;
}
else
{
$y = $height;
$x = $height*(1/$ratio);
}
}
$size = getimagesize($path.$file);
if ( $size)
{
if ($size['mime']=='image/jpeg' )
{
$img_big = imagecreatefromjpeg($path.$file); # On ouvre l'image d'origine
$img_new = imagecreate($x, $y);
# création de la miniature
$img_mini = imagecreatetruecolor($x, $y)
or $img_mini = imagecreate($x, $y);
// copie de l'image, avec le redimensionnement.
imagecopyresized($img_mini,$img_big,0,0,0,0,$x,$y,$size[0],$size[1]);
imagejpeg($img_mini,$path."big_".$file );
}
elseif ($size['mime']=='image/png' )
{
$img_big = imagecreatefrompng($path.$file); # On ouvre l'image d'origine
$img_new = imagecreate($x, $y);
# création de la miniature
$img_mini = imagecreatetruecolor($x, $y)
or $img_mini = imagecreate($x, $y);
// copie de l'image, avec le redimensionnement.
imagecopyresized($img_mini,$img_big,0,0,0,0,$x,$y,$size[0],$size[1]);
imagepng($img_mini,$path."big_".$file );
}
elseif ($size['mime']=='image/gif' )
{
$img_big = imagecreatefromgif($path.$file); # On ouvre l'image d'origine
$img_new = imagecreate($x, $y);
# création de la miniature
$img_mini = imagecreatetruecolor($x, $y)
or $img_mini = imagecreate($x, $y);
// copie de l'image, avec le redimensionnement.
imagecopyresized($img_mini,$img_big,0,0,0,0,$x,$y,$size[0],$size[1]);
imagegif($img_mini,$path."big_".$file );
}
}
if($ratio <= 1)
{
$x = 90;
$y = 90*$ratio;
}
else
{
$y = 90;
$x = 90*(1/$ratio);
}
$size = getimagesize($path.$file);
if ( $size)
{
if ($size['mime']=='image/jpeg' )
{
$img_big = imagecreatefromjpeg($path.$file); # On ouvre l'image d'origine
$img_new = imagecreate($x, $y);
# création de la miniature
$img_mini = imagecreatetruecolor($x, $y)
or $img_mini = imagecreate($x, $y);
// copie de l'image, avec le redimensionnement.
imagecopyresized($img_mini,$img_big,0,0,0,0,$x,$y,$size[0],$size[1]);
imagejpeg($img_mini,$path."mini_".$file );
}
elseif ($size['mime']=='image/png' )
{
$img_big = imagecreatefrompng($path.$file); # On ouvre l'image d'origine
$img_new = imagecreate($x, $y);
# création de la miniature
$img_mini = imagecreatetruecolor($x, $y)
or $img_mini = imagecreate($x, $y);
// copie de l'image, avec le redimensionnement.
imagecopyresized($img_mini,$img_big,0,0,0,0,$x,$y,$size[0],$size[1]);
imagepng($img_mini,$path."mini_".$file );
}
elseif ($size['mime']=='image/gif' )
{
$img_big = imagecreatefromgif($path.$file);
$img_new = imagecreate($x, $y);
$img_mini = imagecreatetruecolor($x, $y)
or $img_mini = imagecreate($x, $y);
imagecopyresized($img_mini,$img_big,0,0,0,0,$x,$y,$size[0],$size[1]);
imagegif($img_mini,$path."mini_".$file );
}
}
unlink($path.$file);
}


mysql_query("INSERT INTO biblix VALUES('', '$titre', '$auteur', '$annee', '$photo', '$photo')")or die(mysql_error());


mysql_close();
?>
<meta http-equiv="Refresh" content="0;URL=add.php" />


Un conseil?
0