FS#57 - Bug affichage image pour les traitements G'MIC (syntaxe d'échappement "\\\"" pour G'MIC)
Ouverte par Strict Standards: array_map() expects parameter 1 to be a valid callback, non-static method Filters::noXSS() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/includes/class.tpl.php on line 281 Angelo (ekd) - Strict Standards: Non-static method Filters::noXSS() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/includes/class.tpl.php on line 613 dimanche, 18 juillet 2010, 11:31 GMT
Dernière édition par Angelo (ekd) - Strict Standards: Non-static method Filters::noXSS() should not be called statically in /data/web/64/9e/8e/ekd.tuxfamily.org/htdocs/bugs/includes/class.tpl.php on line 613 samedi, 21 avril 2012, 17:39 GMT
|
DétailsDavid me signale que la syntaxe d'échappement de G'MIC est "\\\"". Ce qui génère au final des effets de bords dans l'affichage des images lors des traitements finaux dans EKD
Voilà quelques explications (à peu près le commentaire que j'ai mis dans le SVN pour mes dernières rectifications sur le fichier image_filtres_image.py --> révision 1039): Rectification momentanée (pour le traitement final des filtres gérés par G'MIC) en passant par os.system au lieu de self.process.start car un effet de bord est apparu avec le traitement par self.process.start (les images après traitement ne s'affichent plus correctement dans l'onglet Image après traitement). A voir ici dans image_filtres_image.py (de la ligne 2608 à 2723 pour l'instant avant l'ajout de nouveaux filtres G'MIC). Le code sera tout de même facilement visible car on a # Gestion par G'MIC en entête (dans la fonction appliquer). Voilà l'explication: nous utilisons actuellement la syntaxe d'échappement "\"" pour les chemins (...+"\""+chemin+"\""+...), cela fonctionne très bien (surtout pour les chemins comportant des espaces vides) ... mais la syntaxe G'MIC elle veut une autre syntaxe d'échappement, c'est à dire "\\\"" (pour que ce soit affiché comme ceci: gmic \"mon nom de fichier avec espace.jpg\" ...), il a donc fallu transformer les commandes comme ceci: ...+"\\\""+chemin+"\\\""+... et ce en entrée comme en sortie. Il va falloir regarder ça de près (pour le retour de la syntaxe conventionnelle sous Linux et macOSX), c'est à dire self.process.start ... tout en gardant la syntaxe d'échappement spécifique à G'MIC ... en mettant en place les bonnes conditions pour que les images s'affichent correctement (dans l'onglet Images après traitement) lors de l'application des taitements finaux de G'MIC ... tout en gardant l'affichage actuel (qui fonctionne bien) pour les traitements en dehors de G'MIC. a+ |
Voir le SVN d'EKD sur CodingTeam (Révision 469 dans image_filtres_image.py):
Importante mise à jour concernant les processus et les barres de progression. Tous les filtres image ont aussi été testés dans la version windows portable (le filte: Abstraction multicolore n'est disponible que dans la version GNU/Linux, c'est le seul filtre dans ce cas).
Le traitement se fait dans la plupart des filtres (non entièrement Python, c'est à dire gérés par la commande convert d'ImageMagick ou par G'MIC) par l'appel de la fonction: fonctionProcess ... et de la sorte (par exemple pour le filtre "La planète 1":
for self.j in self.listeIndex:
---># -----------------------------------------
---># Code générique sous GNU/Linux et windows
---># -----------------------------------------
--->self.cheminCourantSauv = self.cheminSauv+'_'+string.zfill((self.j+self.spin1valNombres.value()), self.spin2valNombres.value())+self.ext
--->self.commande = EkdConfig.urlGmic+" "+"\\\""+self.listeImgSource[self.j]+"\\\""+" -repeat "+spin1+" --mirror x -a x -done -map_sphere "+spin4+','+spin5+','+spin2+','+spin3+" -o "+"\\\""+self.cheminCourantSauv+"\\\""
--->self.fonctionProcess(self.commande)
--->if not self.opReccurApresApp(): return
--->self.j += 1
Voir ici: http://codingteam.net/project/ekd/browse/trunk/gui_modules_image/filtres_images/image_filtres_image.py/?rev=469
Le seul problème qui reste est le filtre (géré par G'MIC) là la fonction fonctionProcess n'est pas encore utilisée car il y a un souci entre la syntaxe de G'MIC (pour le filtre Abstraction multicolore) et le process de fonctionProcess. A voir avec David (le dev de G'MIC) si on peut trouver une syntaxe équivalente pour cette commande de G'MIC.