PHP - Enregistrement d'image redimensionné

Résolu
underscape Messages postés 57 Date d'inscription   Statut Membre Dernière intervention   -  
Chabanus Messages postés 978 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
voila j'essai de changer la taille d'une image suite a un upload.
j'arrive a l'uploader sans soucis et a changer le format du fichier.
Par exemple envoi en gif ou png etc.. et le transformé en jpg.
Mais par contre impossible de lui donner une nouvelle taille.
Enfin je pense que j'y arrive mais une chose est certaine c'est que cela n'enregistre pas la nouvelle taille, car lorsque je regarde dans le dossier d'arrvié j'ai mon image transformé mais pas redimmensionné.
Voila si quelqu'un a un début d'idée....

<?

// selection selon le format
switch ($_FILES['Imgfile']['type']) {
case "image/gif":
$Src_Img = imagecreatefromgif($UrlduDossier.$_FILES['Imgfile']['name']);
break;
case "image/png":
$Src_Img = imagecreatefrompng($UrlduDossier.$_FILES['Imgfile']['name']);
break;
case "image/jpg" || "image/jpeg":
$Src_Img = imagecreatefromjpeg($UrlduDossier.$_FILES['Imgfile']['name']);
break;
};

imagejpeg($Src_Img, $UrlduDossier.$_FILES['Imgfile']['name'], 75);

//********************************************************
// REDIMENSIONNEMENT DE L'IMAGE.

$New_Width = 200;
$New_Height = 200;

list($Old_Width, $Old_Height) = getimagesize($UrlduDossier.$_FILES['Imgfile']['name']);

$Ratio = $Old_Width/$Old_Height;

if ($New_Width/$New_Height > $Ratio) {
$New_Width = $New_Height*$Ratio;
} else {
$New_Height = $New_Width/$Ratio;
}

// Redimensionnement
$Img_True = imagecreatetruecolor($New_Width, $New_Height);
$Img_Jpg = imagecreatefromjpeg($DIR_ROOT."/".$DIR_IMGTEMP.$_FILES['Imgfile']['name']);
imagecopyresampled($Img_True, $Img_Jpg, 0, 0, 0, 0, $New_Width, $New_Height, $Old_Width, $Old_Height);

$OpenConnex = fopen($UrlduDossier.$_FILES['Imgfile']['name'],'w');
fclose($OpenConnex)

?>
A voir également:

4 réponses

underscape Messages postés 57 Date d'inscription   Statut Membre Dernière intervention   3
 
Bon bah finalement j'ai trouvée
Décidément a chaque fois que je post je fini par trouvé comme une grande.

pour ceux que cela peu aider
vous garder tout jusqu'au dernier break et vous remplacer la suite par cela et la magie opère
<?

$New_Img = imagecreatetruecolor(200, 150); // On crée la miniature vide

$Old_Width = imagesx($Old_Img); // taille de l'image original
$Old_Height = imagesy($Old_Img);
$New_Width = imagesx($New_Img); // taille de la nouvelle image
$New_Height = imagesy($New_Img);

imagecopyresampled($New_Img, $Old_Img, 0, 0, 0, 0, $New_Width, $New_Height, $Old_Width, $Old_Height);

imagejpeg($New_Img, $UrldemonDossier.$NouveauNomdeMonImage);

?>
cia
3
lewis34 Messages postés 2557 Date d'inscription   Statut Membre Dernière intervention   352
 
petite correction dans ton script

<? au debut c'est pas bien.... lol !!!

habitue toi a mettre <?PHP

en tout cas si ça marche bravo d'y etre arrivée toute seule
0
underscape Messages postés 57 Date d'inscription   Statut Membre Dernière intervention   3
 
ah bon faut le mettre ???
ah bah d'accord j'ai vu plein de gens faire ca alors stupidement je me suis dis bah on passe le "php et on met que <?
Entre nous cela me semblais bizarre mais je suis disciplinée
0
Chabanus Messages postés 978 Date d'inscription   Statut Membre Dernière intervention   70
 
Salut, j'ai essayé ton code mais cela ne fonctionne pas chez moi, cela m'affiche des dizaines d'erreurs, quelqu'un sait comment faire ? Merci

<?php

// selection selon le format
if(isset($_POST['envoi'])){
$UrlduDossier = "dossier/";
switch ($_FILES['Imgfile']['type']) {
case "image/gif":
$Src_Img = imagecreatefromgif($UrlduDossier.$_FILES['Imgfile']['name']);
break;
case "image/png":
$Src_Img = imagecreatefrompng($UrlduDossier.$_FILES['Imgfile']['name']);
break;
case "image/jpg" || "image/jpeg":
$Src_Img = imagecreatefromjpeg($UrlduDossier.$_FILES['Imgfile']['name']);
break;
};

$New_Img = imagecreatetruecolor(200, 150); // On crée la miniature vide

$Old_Width = imagesx($Old_Img); // taille de l'image original
$Old_Height = imagesy($Old_Img);
$New_Width = imagesx($New_Img); // taille de la nouvelle image
$New_Height = imagesy($New_Img);

imagecopyresampled($New_Img, $Old_Img, 0, 0, 0, 0, $New_Width, $New_Height, $Old_Width, $Old_Height);

imagejpeg($New_Img, $UrldemonDossier.$NouveauNomdeMonImage);
}
?> 
<form method="post" enctype="multipart/form-data">

<input type="file" name="Imgfile">
<input type="submit" name="envoi" value="ok">
</form>

0