IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[ImageMagick] Couleur dominante d'une image


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 62
    Points : 32
    Points
    32
    Par défaut [ImageMagick] Couleur dominante d'une image
    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'image 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.
    Ya t'il une solution plus optimale de manière à ne pas surcharger la serveur ?

    Pouvez vous m'aider ? merci !

  2. #2
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Wow, voilà une question intéressante.
    La solution la plus simple serait probablement de parcourir chaque pixel et d'en garder la couleur dans un tableau, si toutefois une librairie permet de le faire.
    Si c'est possible, ma suggestion serait d'indexer le tableau par les codes couleurs et sulement incrémenter la valeur d'une case une fois que tu as trouvé la couleur. Ensuite, tu appelles max() et tu as ta réponse.

    Pistes : imagecolorat() et imagecolorstotal().

    Je pense que je vais tester ça ce weekend, par curiosité.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 62
    Points : 32
    Points
    32
    Par défaut
    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 !

  4. #4
    Fabouney
    Invité(e)
    Par défaut
    Bah au pire tu créer une vignette si l'image brute est trop grande, j'pense que tu obtiendra le meme résultat sur l'image brute ou la vignette qu'en pense tu ? car si le mec te colle une big image en effet le traitement risque d'etre gourmand !

  5. #5
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 62
    Points : 32
    Points
    32
    Par défaut
    Oui en effet, c'est d'ailleurs ce que je fais car mon autre robot a besoin de miniature !

  6. #6
    Fabouney
    Invité(e)
    Par défaut
    tient au courant sur ce post, une fois ton script fini, ca peut etre interressant c'est vrai.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 62
    Points : 32
    Points
    32
    Par défaut
    Pas de problème !
    Mais je viens de me rendre compte d'un truc :
    Si je fais ca a partir de la miniature, j'ai deux problemes :
    - ma couleur dominante sera surement faussée
    - je risque de tomber dans du niveau de gris au lieu du noir et blanc

    Je suis donc contraint de faire ca a partir de l'image source !!!!!
    De plus, si je ve trouver une couleur dominante significative d'une image je dois regrouper les nuance.
    En effet, une image peut être a dominante verte foncée avec plein de nuance et peut contenir une toute petite surface de #0000FF ! Et ben avec mon algo la couleur dominante sera #0000FF !

    Enfin bon je vais corriger tout ca !

  8. #8
    Fabouney
    Invité(e)
    Par défaut
    oui, dommage pr la miniature , et en effet il y a un tat de nuance lol pas evident a gérer ...
    en tt cas bon courage. fait un truc solide demande de l'intégrer a PEAR, car ca peut être utile.

  9. #9
    Nouveau membre du Club
    Profil pro
    Spécialiste WordPress
    Inscrit en
    Juin 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Spécialiste WordPress

    Informations forums :
    Inscription : Juin 2006
    Messages : 13
    Points : 32
    Points
    32
    Par défaut
    Salut à tous,

    Je suis sur le même problème.
    En gros, j'ai un serveur qui reçoit des images météo, et je souhaite recevoir un mail dés que la quantité de bleu sur l’image dépasse un certain seuil.
    Le pb c’est que le parcours pixel par pixel est trop long et trop lourd, et en effet il y a aussi le pb des nuances.

    Je cherche toujours, donc si quelqu’un à une autre idée …

    @+
    Taquinade

  10. #10
    000
    000 est déconnecté
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 36
    Points : 36
    Points
    36
    Par défaut
    Il y a assez longtemps, j'avais travailler avec GTK pour du traitement d'image. Je ne sais pas si PHP GTK reprend les memes fonctions mais sinon y avais une fonction qui te remplissait un tableau des pixels d'une image. Ensuite tu peux faire un seuillage de l'image. Mais c'est pas sur que ça soit plus court et moins lourd.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 69
    Points : 80
    Points
    80
    Par défaut
    perso, je faisait la moyenne de tous les pixel de l'image pour avoir la couleur dominante... ça marche pas mal. si les images ne sont pas vraiment trop grosses.

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 165
    Points : 205
    Points
    205
    Par défaut
    salut!
    pareil pour moi...(tout le monde fait un stage chez jpg ou quoi? )
    pour mon cas, je ne parcours pas tous les pixels de l'image, mais seulement un sur deux ou un sur trois etc...en fonction de la taille de l'image.(plus celle ci est grande plus on saute de pixels)
    En effet, si on se base sur le principe que sur une image, la différence de couleurs entre deux pixels voisins est faible, alors on peut se permettre d'en sauter pas mal...
    J'ai essayer:
    1 ca reste cohérent avec les résultats obtenus lorsqu'on on parcours tous les pixels
    2 ca fait un bien fou au serveur

    J'en viens à ma question...
    le fait d'obtenir une nuance dominante avec cette méthode marche pas terrible... cette nuance a beau avoir plein de pixel représentatif, si a coté les autres nuances ont aussi plein de pixel ca va pas marcher...
    ex: si on suppose que toute les couleurs sont divisé en 3 nuances n1,n2,n3
    image1: n1= 30 n2 = 28 n3 = 25 (valeur sans unité)
    image2: n1= 30 n2 = 8 n3 = 5
    si on se contente de regarder la nuance dominante(nuance1), on passe à coté du fait que:
    sur l'image 1, il n'y a pas vraiment de nuance dominante...
    sur l'image 2, la nuance1 va plus "ressortir" que sur l'autre image du fait que la différence par rapport aux autres nuance est grande.
    Fo prendre ca en compte aussi...
    j'y travaille mais si qqn a quelque chose dessus je suis pas contre...

    ++

Discussions similaires

  1. Un script pour couleurs dominantes d'une image
    Par sebastiez dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 08/03/2011, 13h29
  2. la couleur dominante d'une image RGB
    Par aichaeside dans le forum Images
    Réponses: 7
    Dernier message: 25/06/2009, 15h56
  3. [ImageMagick] Redimensionner et compléter une image
    Par mussara dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 14/11/2006, 23h23
  4. [ImageMagick] Apposer un logo à une image en PHP - Problème de couleurs
    Par Saiyan dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 25/07/2006, 18h17
  5. [ImageMagick] Détection des couleurs approximative d'une image ?
    Par SkyDev dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 18/01/2006, 14h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo