begin process at 2012 05 28 14:19:02
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive PHP

 > 

Archives

 > 

Divers

 > 

Calcul de la couleur dominante d'une image


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Calcul de la couleur dominante d'une image

samedi 4 février 2006 à 14:17:01 | Calcul de la couleur dominante d'une image

matique

Bonjour,

Je souhaiterais calculer la couleur dominante d'une image jpg en php.

Pour cela j'ai pensé a deux solutions :

La premiere serait de parcourir l'image pixel par pixel de maniere à ranger dans un tableau chacune de ses couleurs. Mais est ce possible en php.

La seconde serait de redimentionner l'imaga en 1 pixel de maniere à récuperer sa couleur. Dans ce cas la je ne suis pas sur que cela corresponde a la couleur dominante.

Pouvez vous m'aider ? merci !

samedi 4 février 2006 à 15:14:28 | Re : Calcul de la couleur dominante d'une image

coockiesch

Salut!
Je sais pas pour ta 2ème idée, mais pour ta première, tu peux regarder ca:
http://php.benscom.com/manual/fr/function.imagecolorat.php

@++

R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
samedi 4 février 2006 à 16:26:06 | Re : Calcul de la couleur dominante d'une image



Merci pour ton aide le parcours est maintenant possible.
Toutefois j'aimerais savoir s'il y a moyen de récuperer directement le tableau des couleurs plutot que de le construire car ca surchargerait moins le serveur je pense. Le temps d'execution est super important dans le cadre de mon projet !

samedi 4 février 2006 à 16:26:08 | Re : Calcul de la couleur dominante d'une image



Merci pour ton aide le parcours est maintenant possible.
Toutefois j'aimerais savoir s'il y a moyen de récuperer directement le tableau des couleurs plutot que de le construire car ca surchargerait moins le serveur je pense. Le temps d'execution est super important dans le cadre de mon projet !

samedi 4 février 2006 à 22:47:48 | Re : Calcul de la couleur dominante d'une image

Anthomicro

Salut,

oublie la deuxième solution.

"La premiere serait de parcourir l'image pixel par pixel de maniere à ranger dans un tableau chacune de ses couleurs. Mais est ce possible en php."

ça c'est faisable mais c'est bien trop gourmand, PHP n'est absolument pas adapté pour faire ce genre de choses...

enfin bon si t'y tient quand même :

imagesx() et imagesy() d'abord pour avoir la largeur et la hauteur de l'image

deux while() pour parcourir l'image

dedans tu obtiens la couleur du pixel avec un imagecolorallocat() (cf coockiesch)

ensuite (aie aie aie gourmandise) tu peux stocker le nombre de fois que tu as trouvé la couleur dans un tableau qui regroupera les quantités.

exemple :

if(isset($tableau[$rgb]))
{
    $tableau[$rgb]++;
}
else
{
    $tableau[$rgb]=1;
}

$rgb représente la couleur que t'as obtenue avec imagecolorallocat()

etc... ensuite tu classes le tableau par nombre décroissant et tu prends le premier terme, et t'auras ta couleur dominante.

a +

    dimanche 5 février 2006 à 10:51:15 | Re : Calcul de la couleur dominante d'une image

    matique

    Bonjour,

    Merci pour votre aide !
    C'est quand meme vraiment dommage d'opter pour une solution aussi gourmande !
    J'ai effectivement du faire un tableau de stat avec deux for imbriqués et finir par un max du tableau pour récuperer la couleur dominante !
    Enfin bon ca me permet de traiter en même temps si l'image est en niveau de gris ou noir et blanc ou couleur !
    lundi 6 février 2006 à 18:37:32 | Re : Calcul de la couleur dominante d'une image

    matique

    Me revoila !

    En fait, je compte opter pour un traitement a partir d'une miniature non reechantillonnée pour ne pas fausser les couleurs.

    Mon probleme actuel est que si je veux trouver une couleur dominante significative d'une image, je dois regrouper les nuances.
    En effet, une image peut être a dominante verte avec plein de nuance et peut contenir une toute petite surface de #0000FF ! Et ben avec mon algo la couleur dominante sera #0000FF !

    Quels conseils me donneriez vous a ce sujet ?
    Quelle fonction permet de dire quel est la couleur la plus proche d'un pixel donné parmit une liste de couleurs ?

    Encore merci pour votre aide !
    lundi 6 février 2006 à 19:10:14 | Re : Calcul de la couleur dominante d'une image

    Anthomicro

    oulà, tu m'en demandes trop là, PHP n'étant pas fait pour faire du graphisme, c'est déjà pas mal, mais bon tout est affaire de maths après, tu n'as qu'à découper ton image en carrés (plus les carrés sont petits et plus ça sera précis jusqu'à une certaine limite) puis ensuite en carrés plus grands en prenant la couleur dominante de chaque carré pour en calculer ensuite la couleur dominante générale, mais bon ...


      vendredi 13 novembre 2009 à 07:16:37 | Re : Calcul de la couleur dominante d'une image

      MonkeyIsBack

      Coucou !

      Je sais, je vais up un topic sur trois ans, j'ai honte :P

      Mais au moins ça peut créer une indication pour les visiteurs suivants ^^...

      Mes connaissances en PHP sont sommaires mais j'ai une petite idée sur la chose.

      Déjà tu redimensionnes ton image en 100*100, comme ça tu conserves la rapidité du calcul (ton array ne fera "que" (XDD) 10 000 entrées), ensuite tu crées trois autres tableaux, qui enregistrent
      hexdec(substr($valeurarray[x], 0, 2));
      hexdec(substr($valeurarray[x], 2, 2));
      hexdec(substr($valeurarray[x], 4, 2));
      (où valeurarray[x] est ton premier tableau)
      Comme ça tu obtiens la liste de chaque type de couleur en RGB

      Il ne te reste plus qu'à créer trois variables qui feront la somme de chacunes des entrées de tes trois nouveaux arrays, tu divises par 10 000 (nombre d'entrées) comme ça tu obtiens la moyenne de chaque couleur dans l'image, et il te suffit donc de remettre tes données en hexadécimal, créer une nouvelle variable qui contient la moyenne de chaque type de couleur (si tu comprends ><) et tu as ta couleur dominante.


      Exemple avec une image en 2x2 => couleurs : #11aaff, #88ddee, #995511, #aaeecc

      tu vires les dièses avec un simple if (substr($couleur,0,1)=="#") $couleur=substr($color,1,6);

      Tu crées un premier tableau, qui contient en [0] = 11aaff, [1]88ddee etc etc

      Tu convertis tes couleurs en RGB (plus facile pour le traîtement des données), via des fonctions qu'on trouve un peu partout sur le net (tape PHP convertir HEX RGB)

      Ensuite avec ce que j'ai écrit au dessus, tu crées trois nouveaux tableaux qui contiennent les valeurs R, G et B
      couleurR
      couleurG
      couleurB

      tu fais la somme des couleurR[x], la somme des couleurs couleurG[x], et des couleurC[x]
      tu les enregistres dans des simples variables numériques

      Tu divises tes variables par le nombre d'entrées dans le tableau (ici ça serait 4)

      Et tu obtiens la valeur moyenne de R, de G et de B de ton image
      Tu crées donc une nouvelle variable avec "$MoyenneCouleurR$MoyenneCouleurB$MoyenneCouleurB" => ta couleur dominante ^^...


      Cette discussion est classée dans : couleur, image, pixel, calcul, dominante


      Répondre à ce message

      Sujets en rapport avec ce message

      Image sur click .. [ par nicolas66 ] Bonsoir @ tous !Je voulais juste savoir comen il était possible d'afficher une image créee avec php dans la meme page ou il y a un formulaire sur clic Comment choisir la couleur de la bordure? [ par Linuss ] Bonjour à tous, Voilà je viens de "finir" (bah oui entre guillimets, sinon je n'aurais pas de pb avec ^^ et qui n'est, je l'avoue, pas entierement de Lib. GD, Texte sur image [ par DarkM60 ] Bonjour tout le monde, J'aimerai creer une fonction qui met des retour a la ligne avec du texte sur une image(selon si le texte est grand ou pas quoi Changer des pixels de couleur [ par meteo60 ] Bonjour,J'utilise ces fonctions pour modifier la couleur de pixels:$couleur1=imagecolorexact($image,45,26,201);imagecolorset($image,$couleur1,233,217, PHP et les images... [ par porciner ] Bonjour, Je souhaiterais savoir s'il est possible avec PHP d'obtenir la couleur d'un pixel sur une image ? Concrétement : Une image est uploadée par l Conversion image en couleurs données [ par matique ] Bonjour, Je souaiterais convertir une image en restreignant sa palette de couleurs à une palette de couleurs que j'ai definit. Par exemple : j'ai un Couleur transparente [ par gagah1 ] Je voudrais afficher une image en spécifiant une couleur transparente. Comment dois-je faire pour fusionner celle-ci avec la couleur de fond de ma pag La couleur la plus " présente " [ par jnbdzjnbdz ] Salut, je sais pas si quelqu'un c'est comment faire pour que PHP sois capable de voir a partire d'une image la couleur la plus " présente ". Exemple: Traitement d'image [ par Tartuffe ] HELP !!!!!!! Bonjour, J'effectue des traitements d'image et y'a plusieurs trucs qui ne fonctionnent pas. L'historique : Ce qui marche : - je créé une changer la couleur d'une partie de l'image [ par raoulman ] Bonjour, J'ai une image contenant plusieurs couleurs et j'aimerais changer l'une d'elle. J'appelle mon image par la fonction imagecreatefrompng(). Je


      Nos sponsors


      Sondage...

      CalendriCode

      Mai 2012
      LMMJVSD
       123456
      78910111213
      14151617181920
      21222324252627
      28293031   

      Consulter la suite du CalendriCode

      Photothèque

      A découvrir



       
      Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
      CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
      CodeS-SourceS.com© est une marque déposée tous droits réservés

      Google Coop CodeS-SourceS Google Coop CodeS-SourceS
      Temps d'éxécution de la page : 2,371 sec (4)

      Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales