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

  FORUM HardWare.fr
  Programmation
  PHP

  [Résolu] Additionner les couleurs de polygones superposés

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] Additionner les couleurs de polygones superposés

n°2463666
rufo
Pas me confondre avec Lycos!
Posté le 06-02-2024 à 17:56:42  profilanswer
 

Bonjour,
Je trace plusieurs polygones remplis d'un couleur unie sur une image toute noire. Je voudrais que les pixels des zones de l'image où 2 voire plus de polygones qui se superposent (i.e. intersection entre 2 ou plus polygones) prennent la couleur résultant du "mélange" des couleurs de chaque polygone concerné.
Ex : si une zone correspond à l'intersection de 2 polygones dont l'un est dans la couleur rouge (255,0,0) et l'autre est bleu (0,0,255), les pixels de cette zone soient en violet (255,0,255).
 
Je cherche une fonction PHP qui ferait ça nativement, sinon, un algorithme.
 
Merci par avance pour votre aide :jap:


Message édité par rufo le 07-02-2024 à 17:57:42

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
mood
Publicité
Posté le 06-02-2024 à 17:56:42  profilanswer
 

n°2463667
flo850
moi je
Posté le 06-02-2024 à 18:15:15  profilanswer
 

tu utilises une couleur avec de la transparence ?


---------------

n°2463668
mechkurt
Posté le 06-02-2024 à 18:30:33  profilanswer
 

Je maitrises pas trop le sujet programmatiquement mais ça ressemble à certain mode de fusion de calque sur Photoshop.
 
Ça doit pouvoir se faire avec ImageMagick :
https://imagemagick.org/script/composite.php
https://www.w3.org/TR/2004/WD-SVG12 [...] ering.html


---------------
D3
n°2463681
rufo
Pas me confondre avec Lycos!
Posté le 06-02-2024 à 20:13:24  profilanswer
 

flo850 a écrit :

tu utilises une couleur avec de la transparence ?


Ca pourrait être envisagé. Mais j'ai peur d'avoir du mal à pouvoir calculer la couleur des pixels résultant de la superposition avec transparence.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2463682
rufo
Pas me confondre avec Lycos!
Posté le 06-02-2024 à 20:19:06  profilanswer
 

mechkurt a écrit :

Je maitrises pas trop le sujet programmatiquement mais ça ressemble à certain mode de fusion de calque sur Photoshop.
 
Ça doit pouvoir se faire avec ImageMagick :
https://imagemagick.org/script/composite.php
https://www.w3.org/TR/2004/WD-SVG12 [...] ering.html


Oui, c'est le principe des calques de fusion de Photoshop mais je voudrais pouvoir le faire avec PHP.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2463709
mechkurt
Posté le 07-02-2024 à 08:56:45  profilanswer
 

https://www.w3.org/TR/2004/WD-SVG12 [...] mp-op-prop
https://imagemagick.org/Usage/compose/#plus
 
Faudra ptet partir d'un fond blanc par contre...


---------------
D3
n°2463711
rufo
Pas me confondre avec Lycos!
Posté le 07-02-2024 à 09:16:50  profilanswer
 

Avoir un fond blanc ou noir, c'est pas un souci. Par contre, il me faut un truc utilisable directement en PHP. Pas de lib ou outil additionnel, juste une fonction native PHP ou un algo que je puisse implémenter en PHP. Tout mon environnement de production est en PHP. Je dois faire avec ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2463720
mechkurt
Posté le 07-02-2024 à 10:02:00  profilanswer
 

Pas moyen d'installer Imagick sur ton serveur ?
https://www.php.net/manual/fr/imagi [...] eimage.php
https://www.php.net/manual/fr/imagi [...] ompositeop
 
Ou en ligne de commande avec system();
 
Sinon y'a les algos sur la doc w3 svg 1.2 :

Citation :

All color components listed below refer to color component information pre-multiplied by the corresponding alpha value. The following identifiers have the attached meaning in the equations below:
 
      Sc  - The source element color value.
      Sa  - The source element alpha value.
      Dc  - The canvas color value prior to compositing.
      Da  - The canvas alpha value prior to compositing.
      Dc' - The canvas color value post compositing.
      Da' - The canvas alpha value post compositing.
 
plus
 
    The source is added to the destination and replaces the destination. This operator is useful for animating a dissolve between two images.
 
    f(Sc,Dc) = Sc + Dc
    X        = 1
    Y        = 1
    Z        = 1
 
    Dca' = Sca.Da + Dca.Sa + Sca.(1 - Da) + Dca.(1 - Sa)
         = Sca + Dca
    Da'  = Sa.Da + Da.Sa + Sa.(1 - Da) + Da.(1 - Sa)
         = Sa + Da


Mais perso ça ne m'aide pas... :o


---------------
D3
n°2463746
rufo
Pas me confondre avec Lycos!
Posté le 07-02-2024 à 17:57:01  profilanswer
 

C'est bon, j'ai trouvé un algo.
Je transforme chaque polygone rempli d'une couleur unie en segments horizontaux (ligne par ligne). C'est facile, j'ai un fond noir pour chaque image avec un seul polygone tracé dessus en une seule couleur. Donc, pour chaque ligne, je repère à quel $x je passe d'une pixel noir à un pixel de couleur puis quand je repasse d'un pixel de couleur à du noir. Ca me fait un segment. Je continue jusqu'à la fin de la ligne, je passe à la ligne suivante et ainsi de suite.
 
A la fin, je trace chaque segment sur l'image finale via l'algo de Bresenham. Pour chaque pixel à afficher du segment, je calcule la couleur qui est : couleur du pixel déjà présent sur l'image + couleur de mon polygone.
 
Et hop, à la fin, j'ai mon image bien comme je veux :) L'intersection du polygone rouge avec le polygone vert me donne bien du jaune.
 
Edit : au passage, je suis tombé sur cet article plutôt intéressant concernant l'intersection de polygones : https://www.gorillasun.de/blog/an-a [...] rsections/


Message édité par rufo le 07-02-2024 à 18:06:22

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta

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

  [Résolu] Additionner les couleurs de polygones superposés

 

Sujets relatifs
[React] Comment changer le state de manière unique dans une mapPlusieurs tableaux mais avec couleurs différentes ?
Couleurs différente sur le même navigateur d'un pc a un autre! recuperes $sms de maniere a l'envoyer via une iframe avec du html
Manière optimale de lire un fichierManière optimale de lire un fichier
2 Textbox 2 boutons 2 couleursComment utiliser les UI_Manager Gtk Ada de manière générique ?
Test sur les couleurs des cellulesAccéder aux données de cette manière : bien ou pas bien ?
Plus de sujets relatifs à : [Résolu] Additionner les couleurs de polygones superposés


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