WP changer l'attribut d’une image ajoutée

$WP_Image_Sel:=WP Lire selection(*;$WP_areaName)// l’image actuellement en place est sélectionnée

// en faisant ceci l’image sélectionnée est remplacée.
WP INSÉRER IMAGE($WP_Image_Sel;$image1;wk replace;wk include in range)
$Ob_Image:=WP Lire images(WP_PlageImage)
WP FIXER ATTRIBUTS($Ob_Image;wk image alternative text; »Image 1 »)
Jusque là pas de pb.

Par contre, ajouter une image après celle sélectionnée je fais ceci :
WP INSÉRER IMAGE($WP_Image_Sel;$image2;wk append;wk exclude from range)

Comment récupérer la plage de cette image ajoutée ?

$Ob_Image:=WP Lire images(WP_Image_Sel)// Pas bon pas bon !!!

WP FIXER ATTRIBUTS($Ob_Image;wk image alternative text; »Image 2 »)
Et c’est l’attribut de l’image 1 qui est modifiée. Comment accéder à l’attribut de l’image 2?

Bonjour

Si c’est du SVG c’est vectoriel, et parler de luminosité ou de contraste d’une image vectorielle ça n’a pas trop sens…

Une option (pas super clean) serait de transformer l’image en jpg ou png et d’ utiliser PHP pour le faire.

L’autre options (À mon sens plus propre) serait de plutôt modifier les arributs fill et stroke des éléments de l’image SVG.

Donc charger l’image dans un arbre DOM et parcourir tous les attributs… et la ré-exporter en image SVG.
Je ne serais pas étonné que Vincent ait déjà une méthode sous le coude qui fait ça !

Roland

: Roland LANNUZEL

Je ne serais pas étonné que Vincent ait déjà une méthode sous le
coude qui fait ça !
je testerais https://doc.4d.com/4Dv18/4D/18/SVG-SET-BRIGHTNESS.301-4611794.fr.html, des fois que.

4D plante, j’ai raté quelque chose :?:
<code 4D>
LIRE FICHIER IMAGE(Dossier 4D(Dossier Resources courant)+“BO_Classer.svg”;BO_Classer)
C_IMAGE(vaImageSVG)
svgRef:=SVG_Open_picture (BO_Classer)
SVG_SET_BRIGHTNESS (svgRef;50)
vaImageSVG:=SVG_Export_to_picture (svgRef;1)
SVG_CLEAR (svgRef)
</code 4D>

Sais pas, jamais essayé, c’était juste une suggestion. Tu as aussi cette démo de https://forums.4d.com/Post/FR/15921503/1/15921504#15986773Vincent>, il en fait voir de toutes les couleurs à Mona Lisa.

J’essaye comme ceci, mais je bloque pour lire la valeur fill
<code 4D>
C_IMAGE(vImageSVG)
$svg:=DOM Analyser source XML(Dossier 4D(Dossier Resources courant)+“BO_Classer.svg”)
$refChild1:=DOM Chercher élément XML($svg;“fill”)
DOM ÉCRIRE VALEUR ÉLÉMENT XML($refChild1;"#EFEFEF")
SVG EXPORTER VERS IMAGE($svg;vImageSVG;Copier source données XML)
DOM FERMER XML($svg)

</code 4D>

pouvez vous mettre votre image svg à disposition que j’essaye de régler cela. car il me semble que fill est un attribut et pas un élément.

Oui voici

https://forums.4d.com/4DBB_Main/x_User/3916/files/34347270.zip

Avec le fichier (qui n’est pas le même, semble-t-il, que dans votre exemple de code) :

<code 4D>
C_PICTURE(vImageSVG)
$svg:=DOM Parse XML source(Get 4D folder(Current resources folder)+“iconfinder_icon-92-inbox-download_314935.svg”)

$ref:=DOM Find XML element by ID($svg;“icon-92-inbox-download”)

If (OK=1)

DOM SET XML ATTRIBUTE($ref;"fill";"laCouleurQueVousVoulez")
SVG EXPORT TO PICTURE($svg;vImageSVG;Copy XML data source)

End if

DOM CLOSE XML($svg)

</code 4D>

Vincent,

Si je peux me permettre, ton
<code 4D>
If (OK=1)
</code 4D>

est mal placé (ou il manque une autre Si)…

il devrait être juste après le parse, cas si le find échoue, tu ne fermes pas le SVG et tu leak…

Bonne journée !

Tu as raison.
Si c’était du code à moi il y en aurait même un peu plus mais je n’ai pas voulu compliquer car cela ne semble déjà pas clair entre élément et attribut et du coup je me suis pris les pieds dans le tapis.
C’est corrigé.
Merci.

Merci Vincent de votre retour

C’est OK :pray: