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

  FORUM HardWare.fr
  Programmation
  PHP

  calcul de teinte

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

calcul de teinte

n°1500604
krifur
Posté le 09-01-2007 à 01:12:04  profilanswer
 

Salut a tous,
 
Existe t-il un script php gratuit permettant de calculer la teinte principale d'une image?
En gros le script devra detecter la couleur la plus majoritaire sur l image...
 
merci!

mood
Publicité
Posté le 09-01-2007 à 01:12:04  profilanswer
 

n°1500612
red factio​n
Posté le 09-01-2007 à 05:34:29  profilanswer
 

bah c tout con
tu lit tout les pixels  
tu fait une moyenne puis tu ramenne ca sur une teinte (conversion 16 couleurs)
(voir phpgd)
et daboard pourquoi tu veux faire ca?

n°1500684
rufo
Pas me confondre avec Lycos!
Posté le 09-01-2007 à 10:47:24  profilanswer
 

pas sûr que ça soit le bon algo. Imagines une image avec 1/3 de blanc et 2/3 de noir. La couleur majoritaire est le noir et non un espèce de gris issu de la moyenne des 2 teintes...
Moi, je serais parti sur un histogramme et je regarderais la couleur qui a le plus grand effectif.

n°1500714
red factio​n
Posté le 09-01-2007 à 12:02:58  profilanswer
 

oui ben alors ca serait plutot
tu lit tout les pixels  
tu ramenne ca sur une teinte (conversion 16 couleurs) et tu prend la valeur la plus frequente
(ce que rufo a dit quoi)

n°1500715
krifur
Posté le 09-01-2007 à 12:04:03  profilanswer
 

nope rufo il vaut mieux justement que le resultat soit du gris, imagine, une image de 30 couleurs differents plutot dans les verts et une seule couleur orange majoritaire en nombre de pixel et pof la teinte est declarer comme orange alors que le vert est majoritaire.
 
Je vais creuser du cote de ce qu a dit red faction , mais si kk un connait un script javascript ou phph tout pret ben wi merci je veut bien

n°1500719
red factio​n
Posté le 09-01-2007 à 12:40:59  profilanswer
 

je t'ai deja dit cest tout simple
 
faudrait apprendre a chercher sous google
 
php gd sous google me renvoit ca:
http://lu.php.net/gd
 
 

Code :
  1. $old_image =imagecreatefromjpeg("./test.jpg" );
  2. $old_x = imagesx($old_image);
  3. $old_y = imagesy($old_image);
  4. $_rgb=0
  5. for( $x = 0; $x < $old_x; $x++){
  6.    for( $y = 0; $y < $old_y; $y++){   
  7.        $_rgb=$_rgb+ ImageColorAt($old_image, $x, $y);    //original color
  8.      
  9.      
  10.    }
  11. }
  12. $_rgb/=($old_x*$old_y);
  13. (peut etre que $r_rgb nest pas assez grand pour tout contenir....)


 
 
 
poru ramener a 16 couleurs:
 
 
 

Code :
  1. $R = ($_rgb >> 16) & 0xFF;                //split 24 bit color in RGB values
  2. $G = ($_rgb >> 8) & 0xFF;
  3. $B = $_rgb & 0xFF;
  4. $c=4*(convertirenint(($R+64)/128))+2*(convertirenint(($G+64)/128)+1*(convertirenint(($B+64)/128));
  5. apres $c te donnera qqch compris entre 0 et 7
  6. 0= noir
  7. 1= bleur foncé


 
merci de poster ta solution complete, et si ca marche , une fois tout terminé
 
(si c pas trop demander)


Message édité par red faction le 09-01-2007 à 13:08:20
n°1500724
krifur
Posté le 09-01-2007 à 13:02:58  profilanswer
 

ca roule red faction je revient avec le script qui marche une fois que j ai terminer ca (je connaissais pas phpgd)
encore merci!

n°1500733
rufo
Pas me confondre avec Lycos!
Posté le 09-01-2007 à 13:27:00  profilanswer
 

krifur a écrit :

nope rufo il vaut mieux justement que le resultat soit du gris, imagine, une image de 30 couleurs differents plutot dans les verts et une seule couleur orange majoritaire en nombre de pixel et pof la teinte est declarer comme orange alors que le vert est majoritaire.
 
Je vais creuser du cote de ce qu a dit red faction , mais si kk un connait un script javascript ou phph tout pret ben wi merci je veut bien


 
c'est pour ça qu'il faut définir des plages. Faut pas faire un histogramme en 16 millions de couleurs, bien entendu. Donc tu vas regrouper dans une plage les verts clairs, une autre plage les verts foncés, et ainsi de suite... La taille des plages va dépendre de la précision de la teinte que tu veux au final...

n°1500792
krifur
Posté le 09-01-2007 à 15:34:12  profilanswer
 

Citation :

$_rgb=$_rgb+ ImageColorAt($old_image, $x, $y);


cette instruction dépasse le temps d'execution de script par default(30 sec) ca marche mais cela prends trop de ressource pour le petit proc qu y a sur mon serveur, a la limite je vais essayer de le coder en bash...
Donc je vais abandonner a moins qu il existe une methode plus rapide en php ou javascript pour calculer la teinte globale d'une image...(je pensais a lire qu 1 ligne sur 2 mais c pas genial)
 
meric qd meme pour l aide

n°1500820
red factio​n
Posté le 09-01-2007 à 16:05:20  profilanswer
 

tu upload des images de quelle taille????
evidemenet si c du 1600*1200 :/
 
puis c pour utiliser dans quel contexte?

mood
Publicité
Posté le 09-01-2007 à 16:05:20  profilanswer
 

n°1500822
red factio​n
Posté le 09-01-2007 à 16:08:03  profilanswer
 

sinon tu peut aller voir du coté de imagecopyresampled (http://fr.php.net/manual/en/functi [...] ampled.php)  qui redimensionne une image a la bonne taille
 
il suffit de la redimensionner en 1x1 et de lire le pixel qui reste


Message édité par red faction le 09-01-2007 à 16:09:28
n°1500834
krifur
Posté le 09-01-2007 à 16:35:07  profilanswer
 

mon image etait en 960 x 1280 ^^
c'est vrai que c etait beaucoup et comment c malin de redimmensionner l image j y avait pas penser  :o.
Le but est tout simple faire un site d image et lors de l upload de photo par des utilisateurs le formulaire declenche un script qui calcule la teinte de l image et le stocke dans la base de donnes de l image , ce qui permettra plus tard de classer les differentes images par teinte.
Un peu comme sur ce site mais en plus simple:
 
http://www.fotolia.fr/cat1/1000000 (menu de gauche affiner par couleur)
 
tu crois que si je redimmensionne l image en 1x1 j aurais la teinte globale de l image :heink: ?
J ai dut mal a y croire, je vais faire des test avec differentes tailler pour voir les resultats.
 
merci

n°1500837
red factio​n
Posté le 09-01-2007 à 16:36:43  profilanswer
 

si ca marche pas tu peut toujours redimensioner en 64x64 ou 32x32 par exmple puis faire le calcul que je tai donné plus haut...

n°1500852
krifur
Posté le 09-01-2007 à 17:10:03  profilanswer
 

ca a l air de fonctionner:
 
en total rgb je trouve:
 
200x200: 4174062.26837
64x64: 4173461.21875  
32x32: 4172516.29036  
 
en 1x1 ca donne rien,je continuerai les tests plus tard , je doit y aller , mais merci beaucoup ca a l air de fonctionner comme ca!
et merci pour les bons bouts de code ^^
 
 


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

  calcul de teinte

 

Sujets relatifs
Calcul des codes barre EANVBA : calcul d'intégrale
pb de calcul dans une requette ACCESSCalcul de prix avec Access + VB
Pb de selection d'un tri dans une feuille de calcul[Excel VBA] Macro qui se lance à chaque calcul
Conseils pour serveur calcul maths en CCalcul de fps
calcul des statistiques d'un site ouèbe[résolu] calcul faux
Plus de sujets relatifs à : calcul de teinte


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