Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
518 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  redimensionement d'une image propre...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

redimensionement d'une image propre...

n°553165
xkamui
Their Destiny Was Foreordained
Posté le 29-10-2003 à 08:27:33  profilanswer
 

Voilà, j'ai une image envoyé par un user et je voudrais la redimensionné automatiquement, mais il se trouve que, une fois cette redimension faîtes, la nouvelle image est déguelasse ??
 
vous pouvez me donner des indices ??
 
NB : si vous voulez le code, signifiez le moi, merci

mood
Publicité
Posté le 29-10-2003 à 08:27:33  profilanswer
 

n°553244
_maximus_
Goret ptit con ^_^
Posté le 29-10-2003 à 09:37:12  profilanswer
 

Y a deja eu des topic sur ce sujet...  
 
moi j'utilise la fct donnée par z0rglub qu'il utilise dans son appli php de galerie d'image....  
 
 

Code :
  1. <?
  2. //Cree des image minatures
  3. function RatioResizeImg( $image, $newWidth, $newHeight, $path)
  4. {
  5. // chemin complet de l'image :
  6. $chemin = $path.$image;
  7. // détéction du type de l'image
  8. eregi("(...)$",$chemin,$regs);
  9. $type = $regs[1];
  10. switch( $type )
  11.  case "gif": $srcImage = @imagecreatefromgif( $chemin ); break
  12.  case "jpg": $srcImage = @imagecreatefromjpeg( $chemin ); break
  13.  case "png": $srcImage = @imagecreatefrompng( $chemin ); break
  14.  default : unset( $type ); break;
  15.  
  16. if( $srcImage )
  17. {
  18.  // hauteurs/largeurs
  19.  $srcWidth = imagesx( $srcImage ); 
  20.  $srcHeight = imagesy( $srcImage ); 
  21.  $ratioWidth = $srcWidth/$newWidth;
  22.  $ratioHeight = $srcHeight/$newHeight;
  23.  
  24.  // taille maximale dépassée ?
  25.  if (($ratioWidth > 1) || ($ratioHeight > 1))
  26.  {
  27.   if( $ratioWidth < $ratioHeight)
  28.   { 
  29.    $destWidth = $srcWidth/$ratioHeight;
  30.    $destHeight = $newHeight; 
  31.   }
  32.   else
  33.   { 
  34.    $destWidth = $newWidth; 
  35.    $destHeight = $srcHeight/$ratioWidth;
  36.   }
  37.  }
  38.  else
  39.  {
  40.   $destWidth = $srcWidth;
  41.   $destHeight = $srcHeight;
  42.  }
  43.  $destImage = imagecreatetruecolor( $destWidth, $destHeight); 
  44.  imagecopyresampled( $destImage, $srcImage, 0, 0, 0, 0, $destWidth,$destHeight,$srcWidth,$srcHeight );
  45.  $dest_file  = $path.$image;
  46.  switch( $type )
  47.  { 
  48.   case "gif": imagegif($destImage, $dest_file); break
  49.   case "jpg": imagejpeg($destImage, $dest_file);  break
  50.   case "png": imagepng($destImage, $dest_file); break
  51.   default : unset( $type ); break;
  52.  } 
  53.  imagedestroy( $srcImage );
  54.  imagedestroy( $destImage );
  55.   
  56.  return $dest_file;
  57. }
  58. }
  59. ?>


 
 
Elle les miniature sont ok.
a+


Message édité par _maximus_ le 29-10-2003 à 09:37:48

---------------
Ptit con de goret je t'emmerde ^_^
n°553250
Hermes le ​Messager
Breton Quiétiste
Posté le 29-10-2003 à 09:42:26  profilanswer
 

_Maximus_ a écrit :

Y a deja eu des topic sur ce sujet...  
 
moi j'utilise la fct donnée par z0rglub qu'il utilise dans son appli php de galerie d'image....  
 
 

Code :
  1. <?
  2. //Cree des image minatures
  3. function RatioResizeImg( $image, $newWidth, $newHeight, $path)
  4. {
  5. // chemin complet de l'image :
  6. $chemin = $path.$image;
  7. // détéction du type de l'image
  8. eregi("(...)$",$chemin,$regs);
  9. $type = $regs[1];
  10. switch( $type )
  11.  case "gif": $srcImage = @imagecreatefromgif( $chemin ); break
  12.  case "jpg": $srcImage = @imagecreatefromjpeg( $chemin ); break
  13.  case "png": $srcImage = @imagecreatefrompng( $chemin ); break
  14.  default : unset( $type ); break;
  15.  
  16. if( $srcImage )
  17. {
  18.  // hauteurs/largeurs
  19.  $srcWidth = imagesx( $srcImage ); 
  20.  $srcHeight = imagesy( $srcImage ); 
  21.  $ratioWidth = $srcWidth/$newWidth;
  22.  $ratioHeight = $srcHeight/$newHeight;
  23.  
  24.  // taille maximale dépassée ?
  25.  if (($ratioWidth > 1) || ($ratioHeight > 1))
  26.  {
  27.   if( $ratioWidth < $ratioHeight)
  28.   { 
  29.    $destWidth = $srcWidth/$ratioHeight;
  30.    $destHeight = $newHeight; 
  31.   }
  32.   else
  33.   { 
  34.    $destWidth = $newWidth; 
  35.    $destHeight = $srcHeight/$ratioWidth;
  36.   }
  37.  }
  38.  else
  39.  {
  40.   $destWidth = $srcWidth;
  41.   $destHeight = $srcHeight;
  42.  }
  43.  $destImage = imagecreatetruecolor( $destWidth, $destHeight); 
  44.  imagecopyresampled( $destImage, $srcImage, 0, 0, 0, 0, $destWidth,$destHeight,$srcWidth,$srcHeight );
  45.  $dest_file  = $path.$image;
  46.  switch( $type )
  47.  { 
  48.   case "gif": imagegif($destImage, $dest_file); break
  49.   case "jpg": imagejpeg($destImage, $dest_file);  break
  50.   case "png": imagepng($destImage, $dest_file); break
  51.   default : unset( $type ); break;
  52.  } 
  53.  imagedestroy( $srcImage );
  54.  imagedestroy( $destImage );
  55.   
  56.  return $dest_file;
  57. }
  58. }
  59. ?>


 
 
Elle les miniature sont ok.
a+


 
Oui enfin... Z0rglub a rien inventé hein...  [:totozzz]  
 
Il a juste pris le temps de lire la doc et compris que imagecopyresample fait le meilleur boulot.  :D

n°553278
xkamui
Their Destiny Was Foreordained
Posté le 29-10-2003 à 10:06:24  profilanswer
 

mouais.......... avec imagecopyresampled, la qualité n'est pas si meilleure que ça...

n°553294
Hermes le ​Messager
Breton Quiétiste
Posté le 29-10-2003 à 10:15:27  profilanswer
 

xkamui a écrit :

mouais.......... avec imagecopyresampled, la qualité n'est pas si meilleure que ça...


 
ça va aussi dépendre de la qualité de ton image de départ... Chez moi, ça donne des résultats aussi bon qu'avec photoshop pour le redimensionnement.

n°554232
_maximus_
Goret ptit con ^_^
Posté le 30-10-2003 à 10:04:09  profilanswer
 

xkamui a écrit :

mouais.......... avec imagecopyresampled, la qualité n'est pas si meilleure que ça...


 
Ben dans ce cas va falloir que tu trouves un algo d'antialiasing sur le net  [:spamafote]  
Moi en tout cas elles me conviennent ces miniatures.


---------------
Ptit con de goret je t'emmerde ^_^
n°554233
_maximus_
Goret ptit con ^_^
Posté le 30-10-2003 à 10:04:45  profilanswer
 

Hermes le Messager a écrit :


 
ça va aussi dépendre de la qualité de ton image de départ... Chez moi, ça donne des résultats aussi bon qu'avec photoshop pour le redimensionnement.
 


 
Moi aussi  [:spamafote]


---------------
Ptit con de goret je t'emmerde ^_^
n°554926
tranxen_20​0
Posté le 30-10-2003 à 21:05:30  profilanswer
 

Avec imagecopyresampled(), la qualité des miniatures est bonne chez moi.
Par contre, qu'est-ce que c'est long pour générer ces miniatures. :o 8 à 10 secondes pour en générer une trentaine. :/

n°554947
Hermes le ​Messager
Breton Quiétiste
Posté le 30-10-2003 à 21:38:31  profilanswer
 

Tranxen_200 a écrit :

Avec imagecopyresampled(), la qualité des miniatures est bonne chez moi.
Par contre, qu'est-ce que c'est long pour générer ces miniatures. :o 8 à 10 secondes pour en générer une trentaine. :/


 
C'est quoi ton serveur ?? Un 486DX ou quoi ?  :D

n°555017
tranxen_20​0
Posté le 30-10-2003 à 22:24:51  profilanswer
 

Hermes le Messager a écrit :


 
C'est quoi ton serveur ?? Un 486DX ou quoi ?  :D  


J'ai pas essayé en local, à vrai dire. [:mlc]
Le site est hébergé chez OVH et c'est là que c'est lent. :p

mood
Publicité
Posté le 30-10-2003 à 22:24:51  profilanswer
 

n°555027
Hermes le ​Messager
Breton Quiétiste
Posté le 30-10-2003 à 22:29:23  profilanswer
 

Tranxen_200 a écrit :


J'ai pas essayé en local, à vrai dire. [:mlc]
Le site est hébergé chez OVH et c'est là que c'est lent. :p


 
OVH exagère en ce moment. Leurs serveurs sont de + en + lents.  :)  Je peux te dire qu'en local, faire une 40aine d'images prend pas du tout le temps que tu dis.

n°555052
tranxen_20​0
Posté le 30-10-2003 à 23:14:20  profilanswer
 

Hermes le Messager a écrit :


 
OVH exagère en ce moment. Leurs serveurs sont de + en + lents.  :)  Je peux te dire qu'en local, faire une 40aine d'images prend pas du tout le temps que tu dis.  


J'avais fais un test (pour m'amuser  :whistle: ) chez Free.  
Inutile de te donner le résultat...  :D  
Faudra que j'installe GD sur mon serveur Apache en local et que j'essaye.

n°555141
Joel F
Real men use unique_ptr
Posté le 31-10-2003 à 08:37:46  profilanswer
 

D'ailleurs on peut trouver GD ou ?

n°555263
_maximus_
Goret ptit con ^_^
Posté le 31-10-2003 à 10:59:53  profilanswer
 

Joel F a écrit :

D'ailleurs on peut trouver GD ou ?


 
Bah c comprisdans easy php non??
 
Me trompe-je?  :??:


---------------
Ptit con de goret je t'emmerde ^_^
n°555265
Joel F
Real men use unique_ptr
Posté le 31-10-2003 à 11:00:56  profilanswer
 

ah bon ???
af, je vais voir ca

n°555388
T509
$job-&gt;GetJob(now)
Posté le 31-10-2003 à 12:29:01  profilanswer
 


Vas voir le code de J-Browser http://jpage.free.fr/j/index_fr.php?p=jscripts , il a un script pour redimensionner les images qui marche pas mal et qui permet de modifier le taux de compression (en jpg)
 

n°555424
tranxen_20​0
Posté le 31-10-2003 à 13:33:07  profilanswer
 

Joel F a écrit :

ah bon ???
af, je vais voir ca


En fait, dans le répertoire racine d'EasyPhp, il faut ouvrir phpini.exe et cocher gd, gd_gif et/ou gd2 (selon la version voulue).
Par contre, si cela ne marche pas, c'est que GD n'est pas installé. Il faut lancer Apache seul pour voir les messages d'erreur.

n°556849
aspegic500​mg
Posté le 02-11-2003 à 16:42:32  profilanswer
 

Code :
  1. switch( $type )
  2.   { 
  3.    case "gif": imagegif($destImage, $dest_file); break
  4.    case "jpg": imagejpeg($destImage, $dest_file);  break
  5.    case "png": imagepng($destImage, $dest_file); break
  6.    default : unset( $type ); break;
  7.   }


 
imagegif, imagejpeg, imagepng, elles sont où ces fonctions? Parce que Fatal error: Call to undefined function: imagegif() in ****** on line 57

 :sweat:  :??:

n°556851
Hermes le ​Messager
Breton Quiétiste
Posté le 02-11-2003 à 16:43:30  profilanswer
 

aspegic500mg a écrit :

Code :
  1. switch( $type )
  2.   { 
  3.    case "gif": imagegif($destImage, $dest_file); break
  4.    case "jpg": imagejpeg($destImage, $dest_file);  break
  5.    case "png": imagepng($destImage, $dest_file); break
  6.    default : unset( $type ); break;
  7.   }


 
imagegif, imagejpeg, imagepng, elles sont où ces fonctions? Parce que Fatal error: Call to undefined function: imagegif() in ****** on line 57

 :sweat:  :??:  


 
Le gif n'est plus supporté dans GD (enfin si, mais seulement en lecture). Cf : manuel.

n°556852
aspegic500​mg
Posté le 02-11-2003 à 16:45:01  profilanswer
 

Hermes le Messager a écrit :


 
Le gif n'est plus supporté dans GD (enfin si, mais seulement en lecture). Cf : manuel.
 


 
okkk :sleep:  
 
Ben je vais tester avec un jpeg alors :jap:  :hello:
 
edit: je peux lire un gif (mon image actuelle) et generer un jpeg en miniature? :??:


Message édité par aspegic500mg le 02-11-2003 à 16:45:34
n°556854
Hermes le ​Messager
Breton Quiétiste
Posté le 02-11-2003 à 16:47:51  profilanswer
 

aspegic500mg a écrit :


 
okkk :sleep:  
 
Ben je vais tester avec un jpeg alors :jap:  :hello:
 
edit: je peux lire un gif (mon image actuelle) et generer un jpeg en miniature? :??:  


 
voui   :D  Mais dans bcp de cas, le png est préférable, sauf si tu veux avoir une couleur identique avec d'autres éléments graphiques en Jpeg dans la page. (bug des couleurs avec IE).
 

n°556857
aspegic500​mg
Posté le 02-11-2003 à 16:50:15  profilanswer
 

Hermes le Messager a écrit :


 
voui   :D  Mais dans bcp de cas, le png est préférable, sauf si tu veux avoir une couleur identique avec d'autres éléments graphiques en Jpeg dans la page. (bug des couleurs avec IE).
 


 
Euh dans ce cas si le type de fichier à lire est gif ou png je genere un png, et si c'est un jpeg je genere jpeg? :)

n°556859
antp
Super Administrateur
Champion des excuses bidons
Posté le 02-11-2003 à 16:51:27  profilanswer
 
n°556861
antp
Super Administrateur
Champion des excuses bidons
Posté le 02-11-2003 à 16:52:08  profilanswer
 

Hermes > pour le "bug" du PNG dans IE il suffit de virer les infos de gamma, je l'ai déjà fait (pas en PHP :/) et du coup les couleurs correspondent.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°556866
aspegic500​mg
Posté le 02-11-2003 à 17:07:09  profilanswer
 

Warning: imagejpeg(): Unable to open './images-produits/voiture.jpg' for writing in ******* on line 58
 
J'ai l'image mais pas reduite, il me l'affiche en format reel :heink:  :pt1cable:  
 
Il manquerait l'accés en ecriture sur voiture.jpg? :??: (ca voudrait dire qu'il reecrit la miniature sur le fichier? :heink: )

n°556871
aspegic500​mg
Posté le 02-11-2003 à 17:11:34  profilanswer
 

Euh en fait j'ai dû me planter dans l'utilisation de la fonction, elle retourne l'image et pas son nom :sleep:

n°556877
Hermes le ​Messager
Breton Quiétiste
Posté le 02-11-2003 à 17:20:08  profilanswer
 

antp a écrit :

Hermes > pour le "bug" du PNG dans IE il suffit de virer les infos de gamma, je l'ai déjà fait (pas en PHP :/) et du coup les couleurs correspondent.


 
Tu fais ça comment ? Avec les CSS ? Parce que là tu m'intéresses bcp étant donné que dans mon dernier site (à la demande de la cliente), le menu est constitué d'image avec un fond. Hors comme ce font ne pouvait pas correspondre avec le fond global, j'ai été obligé d'opter pour du Jpeg.  :sweat:

n°556878
aspegic500​mg
Posté le 02-11-2003 à 17:23:26  profilanswer
 

Je suis pas sûr de ma maniere d'utiliser la fonction, comment vous l'utilisez :??: (disons que vous generez quoi comme code html?)

n°556881
Hermes le ​Messager
Breton Quiétiste
Posté le 02-11-2003 à 17:24:50  profilanswer
 

aspegic500mg a écrit :

Je suis pas sûr de ma maniere d'utiliser la fonction, comment vous l'utilisez :??: (disons que vous generez quoi comme code html?)


 
Quelle fonction ? Fais toi même la fonction en t'aidant avec le manuel php et ses exemples. C'est la seule manière de réellement comprendre. J'y suis passé moi aussi. ;)

n°556883
aspegic500​mg
Posté le 02-11-2003 à 17:29:15  profilanswer
 

Hermes le Messager a écrit :


 
Quelle fonction ? Fais toi même la fonction en t'aidant avec le manuel php et ses exemples. C'est la seule manière de réellement comprendre. J'y suis passé moi aussi. ;)
 


 
Faut surtout que je comprenne l'utilisation exacte de imagecreatetruecolor() et imagecopyresampled() car le reste de la fonction est assez simple :pt1cable:
 
edit: quelle fonction? ==> celle affichée sur le topic :D
 
edit: je lis et je comprend enfin comment fonctionne ces deux là :)


Message édité par aspegic500mg le 02-11-2003 à 17:47:51
n°556903
aspegic500​mg
Posté le 02-11-2003 à 17:56:43  profilanswer
 

Ca y'est j'ai tout compris comment ca marche, lé bien le manuel php. :)  
Et ca marche aussi dans mon script, fallait juste mettre les droits d'ecriture pour tous sur les fichiers images :cry: (ca pause pas un blem de laisser l'ecriture à tout le monde? :heink: )
 
Par contre probleme, ca m'ecrase le fichier image de depart avec la miniature, donc va falloir que je crée un nouveau fichier avec le prefixe "mini" devant :pt1cable:

n°556920
antp
Super Administrateur
Champion des excuses bidons
Posté le 02-11-2003 à 18:24:25  profilanswer
 

Hermes le Messager a écrit :


 
Tu fais ça comment ? Avec les CSS ? Parce que là tu m'intéresses bcp étant donné que dans mon dernier site (à la demande de la cliente), le menu est constitué d'image avec un fond. Hors comme ce font ne pouvait pas correspondre avec le fond global, j'ai été obligé d'opter pour du Jpeg.  :sweat:  


 
Pas en CSS, faut modifier les fichiers avant de les mettre en ligne
 
http://entropymine.com/jason/tweakpng/
 
Tu supprimes les items "gAMA" ;)
 
Ça a marché pour les fichiers issus de Paint Shop Pro sur lesquels j'ai testé ça


Message édité par antp le 02-11-2003 à 18:25:05

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°557077
Hermes le ​Messager
Breton Quiétiste
Posté le 02-11-2003 à 20:44:26  profilanswer
 

antp a écrit :


 
Pas en CSS, faut modifier les fichiers avant de les mettre en ligne
 
http://entropymine.com/jason/tweakpng/
 
Tu supprimes les items "gAMA" ;)
 
Ça a marché pour les fichiers issus de Paint Shop Pro sur lesquels j'ai testé ça


 
Arf ok, mais inutile dans mon cas, vu que je génère les images dynamiquement. Dommage donc... Ma solution était donc la seule possible dans mon cas.

n°557085
antp
Super Administrateur
Champion des excuses bidons
Posté le 02-11-2003 à 20:49:54  profilanswer
 

Bah en PHP ça peut peut-être se faire


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°557088
Hermes le ​Messager
Breton Quiétiste
Posté le 02-11-2003 à 20:51:19  profilanswer
 

antp a écrit :

Bah en PHP ça peut peut-être se faire


 
A condition d'avoir la main complête sur le serveur pour installer un prog externe. Dans mon cas, ce n'est pas le cas.

n°557102
antp
Super Administrateur
Champion des excuses bidons
Posté le 02-11-2003 à 20:59:55  profilanswer
 

Peut-être avec ça :
http://be2.php.net/manual/en/funct [...] orrect.php
en mettant le gamma à 0 ?
 
edit: non, ça n'a pas l'air d'être lié aux PNG en particulier, ça doit pas être ça


Message édité par antp le 02-11-2003 à 21:03:11

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°557109
antp
Super Administrateur
Champion des excuses bidons
Posté le 02-11-2003 à 21:05:33  profilanswer
 

Sinon tu peux tj rechercher le chunk "gAMA" et le modifier (ou le supprimer) dans l'image :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  redimensionement d'une image propre...

 

Sujets relatifs
[c/c++] Afficher une image avec plus de 16-256 couleurs sous Visual[HTML] Opacité de l'Area d'une map (image)
IE refuse d'afficher une image [super mysterieux inside][HTML] Lien sur une image ?
novice [borland c++ buider] Comment afficher une image avec un bouton?Programmation -> Image
[HTML/JS] mettre une image pour un input type="button" ?[HELP] Inclusion d'image Jpgraph dans un document FPDF
Image qui fait un submit c possible ?aligner a droite un image dans un tableau > fonction align marche pas
Plus de sujets relatifs à : redimensionement d'une image propre...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR