Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks
Bibliothèques et frameworks Forum d'entraide sur les frameworks, templates, bibliothèques de code (PDFLib, eZPdf, JpGraph, Artichow, PEAR, etc). Avant de poster : FAQ bibliothèques, toutes les FAQ PHP et cours bibliothèques
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/03/2006, 21h17   #1
Membre régulier
 
Inscription : février 2006
Messages : 188
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 188
Points : 78
Points : 78
Par défaut [Images] redimension photo php

bonsoir ,

voila j'ai un probleme pour redimensioné une image , j'ai ceci:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
<?php
function redimagenormal($img_src,$dst_w,$dst_h) {
      $size = GetImageSize($img_src);
   $src_w = $size[0]; $src_h = $size[1];
      $test_h = round(($dst_w / $src_w) * $src_h);
   $test_w = round(($dst_h / $src_h) * $src_w);
    if(!$dst_h) $dst_h = $test_h;
      elseif(!$dst_w) $dst_w = $test_w;
   elseif($test_h>$dst_h) $dst_w = $test_w;
   else $dst_h = $test_h;
      echo "WIDTH=".$dst_w." HEIGHT=".$dst_h;
}
?>

j'appele la photo redimensioné ainsi :
Code :
1
2
<IMG SRC="./directory/image/1/20"
 <?php             redimagemini("./directory/image/1/20",100,200)?>>
la photo s'affiche bien comme voulue

, maintenant je désire afficher toute les images correspondant a un identifiant , je fait ceci :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
if( isset($_GET['id']) )
{
$id = intval ($_GET['id']);
         include('redimension.php');
$base="x";
$db="x";
$req = "SELECT lien ".
"FROM table WHERE id_user = ".$id;
$ret = mysql_query ($req) or die (mysql_error ());
while ( $col = mysql_fetch_row ($ret) )
{
echo "<img src=".$col[0]."  redimagenormal(\"".$col[0]."\",100,200)>"
    ;
}
}?>
le probleme est qu'il affiche bien toute les images , mais celles si ne sont pas redimensioné , pourquoi?

merci
ruty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2006, 21h51   #2
Membre émérite
 
Inscription : juin 2002
Messages : 1 013
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 1 013
Points : 959
Points : 959
j'ai pas tout lu, mais quand tu dis que cela fonctionne bien, tu utilises la fonction redimagemini et quand cela ne va pas tu utilises redimagenormal
francis m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2006, 22h10   #3
Membre régulier
 
Inscription : février 2006
Messages : 188
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 188
Points : 78
Points : 78
voila j'ai bien verifie que je melangeais pas les deux mais non , c'est a cause des copier-coller que je me suis tromper

par contre je remarque que les fonctions sont definie sur redimension.php
et la page pour voir les photo c'est galery.php , si je ne mets pas un include de dimension.php sur galery.php ca ne change rien , alors est ce que le probleme est du au faite que la function n'est pas bien declare ici :
Code :
1
2
3
4
{
echo "<img src=".$col[0]."  redimagenormal(\"".$col[0]."\",100,200)>"
    ;
}
merci
ruty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2006, 23h56   #4
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut

Si tu n'inclus pas le fichier contenant la définition de la fonction, tu devrais avoir une erreur du genre Call to undefined function, non ?

Sinon, vérifie bien que $col[0] contient le chemin relatif ou absolu permettant d'accéder à l'image.
Si ce n'est pas le cas, je te conseille ceci :
Code :
1
2
3
4
5
while ( $col = mysql_fetch_assoc ($ret) )
{
   $lien = './directory/image/1/20' . $col['lien'];
   echo "<img src=".$lien.redimagenormal($lien, 100, 200).">";
}
Au passage, tu sembles avoir un joli paquet d'erreurs de syntaxe... Pourquoi ne nous les donnes-tu pas ?
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2006, 00h14   #5
Membre régulier
 
Inscription : février 2006
Messages : 188
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 188
Points : 78
Points : 78
salut merci de preter attention a mon probleme

voila j'ai mis ceci:
Code :
1
2
3
4
5
6
while ( $col = mysql_fetch_assoc ($ret) )
{
   $lien =  $col['lien'];
   echo "<img src=".$lien.redimagenormal($lien, 10, 20).">";
}
}
ca affiche bien la foto mais egalement a gauche de celle ci ceci : WIDTH=10 HEIGHT=15

et la photo n'est pas redimensioné.

Pour ce qui est call undefined function , maintenant je suis obligé de rajouter l'include de la page redimension.php , preuve que la fonction est bien declarer si je pense bien.

quand tu dis de donné mes scripts , au niveau de la syntaxe , tu entends quoi par la? envoyer les scripts au complet?
ruty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2006, 01h11   #6
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Je ne te demande pas de nous donner les scripts mais les erreurs
Cela aurait aussi pour objectif de te forcer à y prêter attention ou au au moins de t'indiquer qu'il devrait y avoir des erreurs, si tel n'est pas le cas.

Pour ton problème, essaie ça :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
function redimagenormal($img_src,$dst_w,$dst_h) {
      $size = GetImageSize($img_src);
   $src_w = $size[0]; $src_h = $size[1];
      $test_h = round(($dst_w / $src_w) * $src_h);
   $test_w = round(($dst_h / $src_h) * $src_w);
    if(!$dst_h) $dst_h = $test_h;
      elseif(!$dst_w) $dst_w = $test_w;
   elseif($test_h>$dst_h) $dst_w = $test_w;
   else $dst_h = $test_h;
 
   return "WIDTH=".$dst_w." HEIGHT=".$dst_h;
}
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2006, 13h14   #7
Membre régulier
 
Inscription : février 2006
Messages : 188
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 188
Points : 78
Points : 78
bonjour

pour ce qui est du probleme de syntaxe , je vais parcourir mon site et donner les probleme que je trouve , j'en ai surtout un que je ne sais pas resoudre , je le ferais lorsque mon probleme de redimension sera resolu


j'ai mis ton script et la photo est bien redimension , mais elle n'apparait plus, on voit juste un cadre avec une petite croix rouge au dessu , si je clique propriete j'ai ca :directory/imag/1/32WIDTH=68 , donc il y a le width=68 de trop je supposes
ruty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2006, 13h35   #8
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Arf, désolé, je t'ai indiqué une fausse manoeuvre auparavant. Fais ceci dans ta boucle :

Code :
echo '<img src="'.$lien.'" '.redimagenormal($lien, 100, 200).'>';
Sinon, concernant tes erreurs :
Non, ne donne pas ici toutes les erreurs de ton site !
Je ne te demande pas plus de donner toutes ces erreurs que de nous donner ton code... Je te demandais simplement de donner les erreurs en relation avec le problème que tu soumets !
Si tu n'avais pas d'erreurs, alors ton serveur de développement est mal configuré (il aurait dû t'en donner). Si tu avais des erreurs, nous les donner aurait pu aider à diagnostiquer ton (tes) souci(s).

Pour revenir sur les modifications de code proposées : il s'agit de demander à la fonction de retourner les paramètres à afficher dans le HTML plutôt que de lui demander de les afficher elle-même. Pourquoi ? Parce que c'est une méthode plus flexible, parce que tu as un meilleur contrôle sur ce qui est affiché.
Dans le code ci-dessus, on voit clairement que tu affiches d'abord le chemin vers l'image puis autre chose, ce qui sera donc des options d'affichage pour l'image. Il n'y a pas besoin de regarder le contenu de ta fonction pour deviner à quoi elle sert et comment elle fonctionne.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2006, 13h43   #9
Membre régulier
 
Inscription : février 2006
Messages : 188
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 188
Points : 78
Points : 78
salut merci , pour les syntaxes j'ai compris , mais avec ceci :
Code :
echo '<img src="'.$lien.'" '.redimagenormal($lien, 100, 200).'>';
il m'indique une parse error : parse error, expecting `','' or `';'' in c:\weblocal\v.1\galery.php on line 34
ruty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2006, 14h11   #10
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Ce n'est certainement pas cette ligne-là qui génère une parse error...
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2006, 14h16   #11
Membre régulier
 
Inscription : février 2006
Messages : 188
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 188
Points : 78
Points : 78
non effectivement , une erreur de ma part

je te remercie de ton aide , merci

EDIT : pourquoi la qualité de l'image est si fortement reduite? ( pas vraiment un probleme de programmation php mais j'en profite pour demander)
ruty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2006, 15h27   #12
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Je n'ai pas l'image sous les yeux donc je ne peux pas juger de ce que tu appelles "qualité si fortement reduite".
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2006, 13h12   #13
Membre régulier
 
Inscription : février 2006
Messages : 188
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 188
Points : 78
Points : 78
salut , je ne vois pas comment pouvoir te montrer l'image , mais si la photo redimensioné est meme plus petite que l'origine la qualité chute , on voit meme des petit carré sur la photo.

maintenant je desire enfait avoir 3fois la photo , 1fois dite "normale" 1fois "small" et alors pour ma gallerie d'autorisé 200pix de largeur max.

normal : j'appele le lien normal , la photo lors de l'insertion ne recois aucun redimensionage

small : j'appele avec la function de plus haut , 100x200 par ex, la on ne distingue pas la mauvaise qualité puisque la photo est relativement petite

3eme : la se pose le probleme , la qualité est assez reduite , peut etre connaisez une methode meilleure?

merci
ruty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2006, 15h19   #14
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Je n'ai jamais vu d'image devenir pixellisée lorsqu'on en réduit les dimensions au moyen de propriétés HTML... Je suis bien curieux de voir ton exemple.

Concernant tes redimensions, je te recommande de jeter un oeil du côté de la librairie GD. Une recherche sur ce forum devrait te donner de nombreux résultats. Le_coyote a écrit un tuto là-dessus.
Si cette solution ne te convient pas, alors il te faudra réfléchir à un petit algo pour récupérer la taille de l'image et la réduire jusqu'à la taille sougaitée. Ce n'est vraiment pas compliqué, c'est pourquoi je ne t'aiderai pas davantage là-dessus.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2006, 17h19   #15
Membre régulier
 
Inscription : février 2006
Messages : 188
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 188
Points : 78
Points : 78
ok merci , je lis d'avantage d'information , mais j'ai un nouveau probleme , enfait j'ai une photo pour la galerie et une autre comme avatar ou couverture , j'ai donc dans ma base un champ "lien" (pour la galerie) et un champs "ava" pour l'avatar

sur la page pour voir l' avatar de la personne , je selectionne "ava" quand c'est l'id ( par get ) , mais j'ai ceci :


la photo de l'avater bien redimensionné mais ceci aussi

Warning: Division by zero in c:\weblocal\v.1\redimension.php on line 27

Warning: Division by zero in c:\weblocal\v.1\redimension.php on line 28

Warning: Division by zero in c:\weblocal\v.1\redimension.php on line 27

Warning: Division by zero in c:\weblocal\v.1\redimension.php on line 28


pour rappel j'ai 3photos en tout pour l'user n°1 , donc apparement les 2 photos qui ne sont pas en avatar posent probleme , pourquoi et comment y remedier?
ruty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2006, 17h26   #16
Rédacteur
 
Avatar de loka
 
Homme Romain PERRUCHON
Architecte - Expert Technique
Inscription : novembre 2004
Messages : 2 664
Détails du profil
Informations personnelles :
Nom : Homme Romain PERRUCHON
Âge : 30
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Architecte - Expert Technique
Secteur : Service public

Informations forums :
Inscription : novembre 2004
Messages : 2 664
Points : 3 607
Points : 3 607
montres nous les 2 lignes incriminés
__________________
SFML - API Multimédia C++ multiplateforme !
loka est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2006, 17h27   #17
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Même sans connaître un mot d'anglais, tu devrais être en mesure de lire ce message d'erreur et de deviner ce qui ne va pas : tu fais visiblement une division à un moment en utilisant la valeur zéro comme diviseur. Probablement une variable mal initialisée.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2006, 17h41   #18
Membre régulier
 
Inscription : février 2006
Messages : 188
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 188
Points : 78
Points : 78
les deux ligne:

ligne 27 $test_h = round(($dst_w / $src_w) * $src_h);
ligne 28 $test_w = round(($dst_h / $src_h) * $src_w);

oui je me doute , mais pourtant je ne désire qu'apeler 1 photo a redimensioné pour mettre en avatar

id --- id_user --- galerie --- ava
1 --- 1 --------- test/h.jpg-
2--- 1 ---------- test/k.jpg- test/k.jpg
3----1-----------test/s.jpg-
4----2-----------test/sd.jpg-


voila en gros la structure , je suppose quand j'appele "ava" quand id_user=1 , lui trouve 3donnees , 1 bonne (image) qu'il redimension =>ok et les 2autre , il ne trouve pas de lien et mets donc l'erreur , je suis bien juste?
ruty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2006, 17h44   #19
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Oui, tu es sur la bonne voie. Il ne te reste plus qu'à trouver comment corriger cette erreur. Conseil : ne fais pas le calcul quand il n'y a pas d'image.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2006, 18h12   #20
Membre régulier
 
Inscription : février 2006
Messages : 188
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 188
Points : 78
Points : 78
mettre une condition sur la page redimension.php qui si il y a le lien il applique la fonction et si il y a pas de lien il ne l'applique pas?

ou plutot sur la page d'afficher l'avatar : j'ai tester ceci:

Code :
1
2
3
4
5
6
7
8
9
10
$req = "SELECT couv ".
"FROM foto WHERE id_user = ".$idf;
$ret = mysql_query ($req) or die (mysql_error ());
while ( $col = mysql_fetch_assoc ($ret) )
{
   $lien =  $col['couv'];
   if ($lien = '')
   {}else{
   echo  '<img src="'.$lien.'" '.redimagenormal($lien, 150, 300).'>';
}                         }
mais dans se cas il ne marque plus que les erreurs et meme plus la photo redimensioné
ruty est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h45.


 
 
 
 
Partenaires

Hébergement Web