Aller au menu - Aller au contenu

[GD] Redimensionner une image sans la déformer

Pour accéder à cette section
Connectez-vous !
connexion_rpx
Page Précédente  1  2 
Pseudo Commentaire
Page Précédente  1  2 
Hors ligne sachaimage # Posté le 07/03/2009 à 00:42:39

Salut !
Tout d'abord très bon tuto !!
Très bon parce qu'on apprend, et tres bon car pratique.
Je l'adapte et l'utilise pour mon site.

Juste une question, lorsque je redimensionne mes photos, la qualité est affectée (surtout lorsque les photos sont de format paysage). C'est qui est dommage car c'est un site de photo que je fais.

Y a-t-il une explication ou un moyen de palier cela ?

Merci

Bye
Hors ligne Nezopu # Posté le 16/05/2009 à 15:10:10
Avatar

Études : Epitech Paris

Serait-il possible que certains Zéros ayant suivit ce tuto postent des exemples de ce que cela permet de faire?
Merci par avance.
 
Hors ligne cedrik972 # Posté le 21/05/2009 à 15:16:11
Deska
Avatar

Salut,
Merci pour le tuto, c'est génial ! :)

Site avancement : | | | | | | | | | | : 10%
3D Studio Max : | | | | | | | | | | : 10%
Gwo kok ka fè sa i lé, ti kok ka fè sa i pé | Tout kochon ni sanmdi-yo
 
Hors ligne ratdelabo # Posté le 09/07/2009 à 15:26:17
Avatar

Je suis ravi que cela puisse vous aider, même si ça date un peu maintenant... ^^
Il y a évidemment quelques petites modifs possibles.
Cordialement,
 
Hors ligne MAfiOo # Posté le 09/09/2009 à 11:19:25
Avatar

Études : IMERIR

Très bon tuto, très bien expliqué

Good job ^^

Secret (cliquez pour afficher)
Note: 18
Hors ligne cunegonde # Posté le 19/11/2009 à 19:51:33

Bravo egalement, pour un debutant, c'est top! Une chose qui m'a aidée car j'avais une erreur dans mon propre code et voulais vérifier si c'etait au niveau de l'upload du fihcier ou pas. c'est de donner des infos de base sur comment récupérer en une fois les infos sur un fichier reçu via INPUT TYPE="FILE", cad, d'indiquer ceci:

Code : PHP
1
<?  print_r($_FILES); ?>


J'ai ainsi pu vérifier que l'upload se faisait bien..

Par ailleurs, as tu pris en compte les remarques de certains dans le tuto depuis la première version ou faut il lire un a un les commentaires et faire les modifs suggérées pour optimiser encore le code?

Enfin, l'upload est TRES LONG sur mon serveur (chez un pro de l'hebergement) .. Y a t'il quelque chose à faire pour limiter le temps de digestion de la demande d'upload?

" la développeuse qui préfère les Wazas aux pizzas- bien que celles ci soient bonnes aussi".
Hors ligne Blaise29 # Posté le 18/02/2010 à 16:47:55
Avatar

Très beau tuto, j'ai appliqué avec quelques modifs mysql, et après 1 journée de dur labeur (ben oui je débute ^^), le script modifié est opérationnel...

Cependant une chose me chagrine : j'utilise le script dans le but de permettre à des artistes d'ajouter automatiquement les photos de leurs oeuvres dans les répertoires appropriés et dans les bases correspondant à leur site, mais malheureusement la taille maximale de l'upload pose problème, puisque la plupart des appareils photos actuels créent des fichiers supérieurs à 2mo...

J'ai tenté sans succès d'augmenter la valeur de vérification sur la ligne de vérification
Code : PHP
1
if ($_FILES['ImageNews']['size'] <= 2097152)


Ainsi que sur la ligne
Code : PHP
1
<input type="hidden" name="MAX_FILE_SIZE" value="4194304" />

Toujours sans succès...

Y-a-t'il possibilité d'outrepasser la valeur maximale ou est-ce une limitation automatique à laquelle on ne peut déroger ?

Il n'est jamais trop tard pour admettre qu'on a mal fait,
Il n'est jamais trop tôt pour ratrapper ses erreurs.
 
Hors ligne flash221 # Posté le 17/09/2010 à 15:13:56

Bonjour,
Etant donné un fichier image sur mon site (par ex : images/photo.jpg)
$img=images/photo.jpg;

Comment faire pour adapter ton script sans passer par un POST, peux-t-on faire :
$_FILES['ImageNews']=$img; ??

Ou bien faut-il faire $_FILES['imageNews']=fopen($img); ?
puis lancer le script puis fermer le fichier ?

Merci pour les idées.. o_O
Hors ligne dick26 # Posté le 24/09/2010 à 18:15:00
Avatar

J'ai un souci lors de l'upload: lorsque l'image dépasse les 200ko, l'upload ne se termine jamais... sinon ça marche niquel.
Est-ce que quelqu'un peut m'aider ?
Merci d'avance :)
 
Hors ligne anoushka # Posté le 16/02/2011 à 13:20:28
Avatar

Avis : Très bon

Bonjour !

Toutes mes félicitations pour ton tuto, très didactique, qui m'a beaucoup aidé !! :) MERCI !

De mon côté, et comme l'avait soulevé A-spec59, je l'ai adapté pour que, si l'image envoyée par l'utilisateur a déjà une largeur inférieure à la limite qu'on a fixée, alors le programme ne redimensionne pas l'image mais l'enregistre simplement. (encore un IF et un ELSE en somme ; oui je les aime bien !)

La ligne qui m'intrigue (je ne suis pas experte en php tu en conviendras ! ;) ) c'est celle-ci :
Code : PHP
1
$NomImageChoisie = explode('.', $ImageNews);
J'ai bien lu et relu tes explications, mais comme on ne retrouve jamais la variable $NomImageChoisie dans les lignes suivantes, j'ai du mal à comprendre son utilité.. Tu pourrais m'éclairer ?

Autre point

Pour la condition IF
Code : PHP
1
2
if ($_FILES['ImageNews']['size'] <= 2097152)
{............
et son ELSE Code : PHP
1
} else { echo 'Erreur :L\'image est trop lourde.'; }
je n'arrive jamais à voir ce message d'erreur ("Erreur : L'image est trop lourde")..

En effet, si j'envoie une photo de plus de 2Mo, j'obtiens le message d'erreur d'une autre condition, à savoir celle-ci :
Code : PHP
1
2
3
4
5
6
// S'il n'y a pas d'erreur :
if ($_FILES['ImageNews']['error'] <= 0)
{
............
} //FIN de "S'il n'y a pas d'erreur"
else { echo 'Erreur, recommencer l\'opération.'; }


De même, si je n'envoie rien du tout, j'ai le même message
Code : PHP
1
2
} //FIN de "S'il n'y a pas d'erreur"
else { echo 'Erreur, recommencer l\'opération.'; }
aulieu de celui-ci
Code : PHP
1
2
3
4
5
6
// S'il y a un fichier uploadé :
if (!empty($_FILES['ImageNews']))
{
........
} //fin de "S'il y a un fichier uploadé"
else { echo 'Erreur : aucun fichier uploadé.'; }

Comment puis-je résoudre cela ?

D'autre part, j'aimerais savoir comment faire pour que l'utilisateur puisse envoyer des images plus lourdes que 2Mo... qui seront redimensionnées ensuite par le programme ; car effectivement, l'utilisateur voudra probablement envoyer des images provenant de son appareil photo.
Y-a-t-il un tuto complémentaire là-dessus ? (je ne l'ai pas trouvé pour le moment mais je cherche)

Enfin, comment faire pour éviter la création d'une nouvelle image à chaque actualisation de la page du programme ? (il doit y avoir un tuto là-dessus, je cherche.. ;-)

En tout cas, merci beaucoup :D

Anoushka
 
Hors ligne JooS # Posté le 27/02/2011 à 19:13:32
Avatar

Ville : Alger
Pays : Algérie

Tres Bon tuto ...

Vous devriez Ajouter Une condition au cas ou l'image sera tros petite, parce qu'elle va être étiré... et ça fait moche ^^ ...
Hors ligne nicolas2603 # Posté le 11/04/2011 à 20:23:26

Bonjour, tout comme anoushka, je cherche une solution pour les images > 2 Mo. Une idée ? Merci d'avance.
Hors ligne Martin7738 # Posté le 26/04/2011 à 19:12:06

Avis : Très bon

Ville : Serris
Pays : France métropolitaine

Excellent tuto. Il me sert vachement ;)

Image utilisateur
 
Hors ligne bibibenji # Posté le 09/07/2011 à 21:01:35

bonjour a tout les zéros. Je cherche un script capable de redimensionner une image sans la déformer. Je suis tombé sur ce tutoriel, je l'ai suivi avec attention jusqu'au bout mais mon script ne marche pas. qui pourrait me le donner en entier s'il-vous-plait. Merci d'avance. (sinon, c'est un très bon tuto mise a part que je n'ai pas su le réaliser :p)
Hors ligne kami-sama # Posté le 10/07/2011 à 01:27:57
真実はたった一つ
Avatar

Bibibenji : dit nous plutôt se qui ne fonctionne pas que l'on t'aide, le faire a ta place ne t'aidera pas a devenir le meilleur dresseur un bon programmeur.
 
Hors ligne bibibenji # Posté le 10/07/2011 à 15:17:28

ben j'ai laissé tombé, et je me suis créé un petit script mais il a des problèmes. Voici mon script :

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<html>
<body>
<?php
$image = 'img/11.jpg';
$chemin = '$image';  // chemin de l'image
$infos_image = @getImageSize($chemin); // info sur la dimension de l'image
// '@' est placé devant la fonction getImageSize()pour empecher l'affichage
// des erreurs si l'image est absente.
       
 //dimension 
$L = 500; // largeur qu'on veut
$H = 500; // hauteur qu'on veut
 $largeur = $infos_image[0]; // largeur de l'image
 $hauteur = $infos_image[1]; // hauteur de l'image
 $type    = $infos_image[2]; // Type de l'image
 $html    = $infos_image[3]; // info html de type width="468" height="60"

echo "$largeur / "; // affiche la hauteur
echo "$hauteur - "; // affiche la largeur
if ($largeur <= $L || $hauteur <= $H)
{
$l = $largeur / $L;
$h = $hauteur / $H;
	if ($l >= $h)
	{
	$li = $L;
	$hi = $hauteur / $l;//remplacer $largeur par $L
	//diviser $hauteur par $l
	}
	
	else
	{
	$hi = $H;
	$li = $largeur / $h;//remplacer $hauteur par $H
	//diviser $largeur par $h
	}
}
else
{
	if ($l >= $h)
	{
	$li = $L;
	$hi = $hauteur / $l;//remplacer $largeur par $L
	//diviser $hauteur par $l
	}
	
	else
	{
	$hi = $H;
	$li = $largeur / $h;//remplacer $hauteur par $H
	//diviser $largeur par $h
	}
	}
?>
<img src="<?php echo ("$image"); ?>" width="<?php echo "$li"; ?>" heigt="<?php echo "$hi"; ?>" />
</body>
</html>

(ce n'est qu'un morceau de mon fichier car je travaille sur un diaporama "dynamique".)
Alors mon script marche très bien, sauf quand l'image est plus longue que large.
enfete mon script prend la largeur, il la change en la taille demandé et la longueur suit... Ce n'est pas ce que je voulait faire mais ca marche pour les images qui ne sont pas plus longues que larges.
Connecté Dominique0796 # Posté le 18/08/2011 à 10:26:16
Pas de victoires sans échecs
Avatar

Bravo, félicitations, je ne connaissais pas ce sujet mais j'ai tout de suite compris !
 
Hors ligne 0-sam-0 # Posté le 28/08/2011 à 22:19:31

Études : Lycée Jean Perrin - Lyon

Bonjour!
Tout d'abord bravo pour ce tuto qui me parait très bien fait! :)
Je ne l'ai pas encore tester mais un petit truc m'a interloqué
Citation : ratdelabo
<?php
// Étape 1 :
$NouvelleLargeur = 350;

// Étape 2 :
$Reduction = ( ($NouvelleLargeur * 100)/$TailleImageChoisie[0] );

// Étape 3 :
$NouvelleHauteur = ( ($TailleImageChoisie[1] * $Reduction)/100 );
?>

Pourquoi multiplier par 100 à l'étape 2 pour diviser par 100 a l'étape 3? :lol:

Autant tous de suite mettre : Citation : 0-sam-0
// Étape 2 :
$Reduction = ( $NouvelleLargeur/$TailleImageChoisie[0] );

// Étape 3 :
$NouvelleHauteur = ($TailleImageChoisie[1] * $Reduction );


P.S: Ceci ne dénigre pas la qualité du tuto mais permet juste de le faire s'approcher de la perfection ^^
Hors ligne sanoc # Posté le 04/11/2011 à 23:59:08
Alias, Pinguï le conquérant
Avatar

Avis : Très bon

Très bon Tutoriel en effet. Une superbe application au cour de M@teo21!!
Ce tutoriel va surement me suivre des années maintenant et je t'en remercie grandement!!

Par contre je rejoinds 0-sam-0 sur le problème de la multiplication par 100 pour ensuite diviser par 100 ;)
Mais sa reste très sommaire comme erreur et ne gène en rien le reste!!

Microsoft : « Vous avez des questions ? Nous avons des trombones qui dansent. »
 
Hors ligne Thunderseb # Posté le 05/11/2011 à 18:23:53
Responsable de la validation
Avatar
Validateurs

Ville : Liège
Pays : Belgique

Ce problème mathématique a été corrigé ;)

Voici le détail :

Citation : Alerte n°5596
Cette alerte concerne le tutoriel [GD] Redimensionner une image sans la déformer (accès direct au chapitre).


Bonjour-bonjour,

Je me permet de relever une toute petite faute de l'ordre mathématique ne posant aucun problème sur le reste du tutoriel ni sur son fonctionnement global. Mais un aussi bon tutoriel mérite que je prenne deux seconde pour informer.

Code : PHP
1
2
$Reduction = ( ($NouvelleLargeur * 100)/$TailleImageChoisie[0] );
$NouvelleHauteur = ( ($TailleImageChoisie[1] * $Reduction)/100 );


Cela revient a écrire:

Code : PHP
1
$NouvelleHauteur = ( ($TailleImageChoisie[1] * (($NouvelleLargeur * 100)/$TailleImageChoisie[0]))/100 );


Qui est donc égal à:

Code : PHP
1
$NouvelleHauteur = ( ($TailleImageChoisie[1] * (($NouvelleLargeur)/$TailleImageChoisie[0])) );


En bref:

a(b*100)/c/100 = a*(b)/c
 
Connecté Zakatchi # Posté le 04/12/2011 à 10:53:43
Avatar

Avis : Très bon

Merci beaucoup pour ce beau tuto. C'est la première fois que je vois un tuto sur le redimensionnement d'image digne de ce nom, et surtout, qui marche ! :)

[Juste une petite erreur avec la fonction explode "Warning: explode() expects parameter 2 to be string, array given in" mais bon, c'est pas grave ;) ]

Image utilisateur

Zakatchi
~ Co-developper et directeur financier du projet Factus Scribo
Présentation du projet
 
Pour accéder à cette section
Connectez-vous !
connexion_rpx