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

Discussion :

Positionner une image selon des coordonnées

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Juin 2012
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2012
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Positionner une image selon des coordonnées
    Bonjour,

    J'ai des coordonnées en x et en y qui me disent où positionner une image dans mon rapport BO.

    Est-ce que BO est capable de me mettre une image à un endroit précis sachant que les coordonnées des points ne sont pas fixes? si oui comment faire?


    Le but : On a enregistré les coordonnées des points là où des personnes cliquent sur un écran tactile, et on souhaiteraient afficher tous ces points sur une image.

    J'espère que ma question est compréhensible.

    Merci de votre réponse

  2. #2
    Membre expérimenté Avatar de djam21
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Janvier 2006
    Messages
    843
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2006
    Messages : 843
    Points : 1 307
    Points
    1 307
    Par défaut
    Hello,

    Tu peux fixer la position d'une image par rapport aux marges de ton rapport ou par rapport à un autre élément de celui-ci.

    Exemple :
    La position est déterminée :
    - à 15 pixels par rapport à la marge gauche.
    - à 15 pixels par rapport à la marge haute.

    Tu trouveras cette option dans les propriétés de ton élément "image" une fois que tu l'auras inclus dans ton rapport.

    A+

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Juin 2012
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2012
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Tout d'abord merci de ta réponse.

    La solution que tu me donne veut dire que je dois à chaque état modifier l'emplacement de mes points alors que le but c'est qu'il s'affiche de manière auto.

    Admettons : j'ai un utilisateur qui clique à 10 endroits sur l'écran, je veux que les 10 points s'affichent sur mon état par rapport au coordonnées que j'ai récupéré.

  4. #4
    Membre expérimenté Avatar de djam21
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Janvier 2006
    Messages
    843
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2006
    Messages : 843
    Points : 1 307
    Points
    1 307
    Par défaut
    Je n'ai pas compris... Ce n'est pas une question de placement d'image dans un rapport ?

    Ton image change de position en fonction de ton rapport ?

    A+

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 364
    Points : 551
    Points
    551
    Par défaut
    Bonjour,

    Oui on peut. Mais ça demande de violer un peu BO, d'écrire du HTML et de jouer avec les styles.

    Exemple, tu intègres une cellule vide.
    tu en changes la propriété : Lire le contenu de cellule comme ->> HTML

    Dans la cellule tu saisis la formule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ="<div style='position:absolute; top:50px;left:50px'><img src='http://mon serveur/monimage.png'></div>"
    Quelle que soit la position de la cellule, l'image apparaîtra à 50, 50 du coin supérieur gauche du rapport.

    Cette formule peut être intégrée dans un tableau et reliée à des objets de la requête.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ="<div style='position:absolute; top:"+[PosY]+"px;left:"+[PosX]+"50px'><img src='http://mon serveur/"+[AdresseImage]+" '></div>"
    Si je ne me suis pas planté dans les simples et doubles quotes, tu devrais pouvoir changer d'image à chaque ligne de tableau et la positionner où tu veux dans ton rapport.

    Pour insérer des images tu peux utiliser un nom de partage ou un serveur web (même local). Dans l'exemple j'ai utilisé un serveur local. C'est la solution que je préfère.

    Petit rappel : BO ne transmet dans ce cas que l'URL de l'image. Pour qu'elle s'affiche sur le poste client, il faut que le navigateur client puisse accéder à l'URL qui lui a été passée (C'est pour cela que je préfère un serveur web pour les images ).

    Si pour délimiter les valeurs de style, tu préfères les guillemets (") à la place des apostrophes ('), tu peux le faire mais il faut les échapper avec un antislash (\") sinon BO ne s'y retrouve plus.

    Evidemment pour faire cela : Web Intelligence obligatoire et je ne garantis pas l'aspect de l'impression ni ce qui se produira si on change le facteur de zoom à l'affichage .

    A la relecture, on peut peut être se passer du <div> et mettre directement le style dans la balise <img> mais ça, je n'ai pas testé.

    Cordialement,

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Juin 2012
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2012
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci djam21, effictivement mon image bouge en fonction de mon rapport.
    Merci aussi pour ta réponse dlra_.
    Nos informaticiens vont tester ça. Est-ce que tu penses que c'est possible de faire ça en Delki? parce que tous nos rapports sont construits en Delki.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 364
    Points : 551
    Points
    551
    Par défaut
    A mon avis ce n'est pas possible en Deski.

    Sauf peut être à utiliser le VBA. Mais ça, je ne connais pas.

    J'ai bien peur que BO ne soit pas un SIG.

    Cordialement,

  8. #8
    Nouveau Candidat au Club
    Inscrit en
    Juin 2012
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2012
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    D'accord, merci encore pour ces informations, je mettrai le message en résolu, dès que ça sera testé, merci encore pour tes réponses et ton intérêt.

    Pour info, que veut dire SIG?

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 364
    Points : 551
    Points
    551
    Par défaut
    Bonjour,

    SIG : Système d'information géographique : comme Google Maps en quelque sorte.

    Après, si tu veux déplacer une image sur Desktop Intelligence et que tu n'a pas besoin d'une précision supérieure à la taille de l'image, tu peux toujours créer un super tableau croisé qui occupe la taille du rapport et avec des variables et un jeu d'alerteurs positionner les images et le fond à l'endroit que tu souhaites.

    C'est pas mal de boulot pour un résultat moyen (Deski n'accepte que le bmp et le tiff) mais si ça peut faire l'affaire !!!

    En tout cas avec cette solution (béquille ?) plus de problème de zoom ni d'impression.

    Cordialement,

  10. #10
    Futur Membre du Club
    Profil pro
    noane
    Inscrit en
    Septembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : noane

    Informations forums :
    Inscription : Septembre 2007
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    la demande est la suivante:

    On a des pièces qui lors de la fabrication comportent des type de défauts, chaque type de défaut indique la position (x,y) sur une image "originale" de la pièces, ce que l'on veut c'est afficher par pièce et type de défaut une image de cette pièce avec une marque pour chaque défaut.

    La version est BO (deski et Webi) XI 3.1

    Dans un document WebI :
    une image est une cellule dont on modifie la propriété et non la formule (image d’arrière plan), en regardant dans chrome (CRTL+J) on voie que l'image est stockée dans le "css" et mon dans un tag "<img>", de plus on ne peut pas faire une formule qui permettrai de générer du html, en effet dans le texte de la cellule, le moteur change tous les "<" en "&lt;".

    note: si cela avait été possible une solution à base de html5 et de canvas été possible (testé sous IE9 et chrome), mais impossible en IE8 même avec excanvas.
    on peut charger l'image en javascript dans le <canvas>, puis désiner sur l'image.

    Dans un document BO (.rep - busobj.exe - DeskI - ...) :
    Les images dans le rapports non rafraîchi depuis l'import, sont encodées comme ci dessous :
    (vue sous chrome avec CRTL+J)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="getImage.jsp?sEntry=re000100007cacef35dcbc&amp;name=0_p_0_b0000001.gif" width="106" height="126">"
    Le nom de l'image au départ était "c:\images\piece1_defaut1_50_50.bmp" dans le rapport deski.

    A mon avis l'utilisation de l'engine WebI ou Deski étant impossible pour des images générées à la volée, une solution avec le sdk webi ne fonctionnera pas.

    Reste peut être la solution en DeskI + VBA (génération des bmp, rafraîchissement de la requête, puis export en pdf dans la cms)


    @+

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 364
    Points : 551
    Points
    551
    Par défaut
    Bonjour noaie,

    J'ai bien peut de n'être que partiellement d'accord avec ce que tu avances principalement pour Webi.

    Oui, les images d'arrière-plan sont embarquées à l'intérieur du document et sont les seules qui puissent s'ajuster automatiquement à la taille de la cellule (du moins en XI3).

    Oui, lorsqu'on souhaite insérer une image de premier plan, on ne saisit qu'une formule à l'intérieur de la cellule et c'est le navigateur qui va effectivement rechercher l'image. C'est même pour cela qu'aller chercher l'image sur un serveur web est le plus simple. Dans une organisation, l'URL a de bonne chance d'être la même pour tout le monde.

    Si on active la propriété de cellule : Lire le contenu de cellule comme "HTML", BO est en mesure d'interpréter correctement les balises. Je l'ai fait de multiples fois et ça fonctionne.

    Par ailleurs j'ai testé la solution proposée plus haut avant de poster (je suis d'un naturel méfiant et je prèfère toujours tester avant d'avancer une ânerie ) et j'ai bien fait apparaître l'image en dehors de la cellule qui accueille le HTML. Tu peux essayer si tu le souhaites en t'inspirant du post concerné.

    Reste que je suis nettement moins affirmatif en ce qui concerne la position de l'image en cas d'impression (par paresse je n'ai pas testé ) et de changement de facteur de zoom du rapport (même remarque). Mais ça, je l'ai déjà précisé dans ledit post.

    Cordialement,

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 364
    Points : 551
    Points
    551
    Par défaut
    Dans l'impossibilité d'éditer le post précédent :

    Je précise ici que l'affichage des images sur Webi fonctionne parfaitement en visualisation de document, ce qui est l'usage normal.

    Par contre en mode de création de rapport avec l'éditeur Java (et IE8) on ne voit que le lien textuel vers l'URL. C'est peut être là que gît le lièvre.

    Cordialement,

  13. #13
    Futur Membre du Club
    Profil pro
    noane
    Inscrit en
    Septembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : noane

    Informations forums :
    Inscription : Septembre 2007
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Re,

    j'ai trouvé plus simple que le HML5 et les canvas.

    Merci à Dlra pour ce petit rappel qui a toute son importance (Lire le contenu de cellule comme ->> HTML)

    En regardant le HTML de la page on y voie comment Webi charge des images (getimage.jsp) cela m'a donné l'idée de faire une servlet qui charge une image et qui la retourne modifiée avec les coordonnées du point passées en paramètre.

    dans la cellule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ="<img src='/myweb/GetImage?filename="+[piece]+".jpg&posx="+[Pos X]+"&posy="+[Pos Y]+"'>"
    Et enfin la servlet (je l'ai crée sur un site "myweb" qui sur le même serveur que mon serveur WebI), dans cette solution l'image modifiée n'est pas stockée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    package com.main.lib;
     
    import java.awt.Color;
    import java.awt.Graphics2D;
    import java.awt.Image;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.OutputStream;
     
    import javax.imageio.ImageIO;
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.swing.ImageIcon;
     
    /**
     * Servlet implementation class GetImage
     */
    public class GetImage extends HttpServlet {
    	private static final long serialVersionUID = 1L;
     
        /**
         * @see HttpServlet#HttpServlet()
         */
        public GetImage() {
            super();
            // TODO Auto-generated constructor stub
        }
     
     
    	public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
     
    		String filename  = (String) request.getParameter("filename");
    		System.out.println("filename="+filename);
    		String sposx = (String) request.getParameter("posx");
    		System.out.println("posx="+sposx);
    		String sposy = (String) request.getParameter("posy");
    		System.out.println("posy="+sposy);
    		int  x = 50;
    		int  y = 50;
     
    		try{
    			x = Integer.parseInt(sposx);
    			y = Integer.parseInt(sposy);
    		} catch(Exception E) {
    			System.out.println("EXECPTION ....."+E.toString());
    		} 
     
    		System.out.println("x="+x);
    		System.out.println("y="+y);
     
    		Image image = new ImageIcon("c:\\images\\"+filename).getImage();
     
    		BufferedImage buffer = new BufferedImage(
    				100, //image.getWidth(null), 
    				100, //image.getHeight(null), 
    				BufferedImage.TYPE_INT_RGB 
    			);
     
    		Graphics2D g = buffer.createGraphics();
    		g.drawImage(image, 0, 0,null);
    		g.setColor(Color.green);
    		g.drawLine(0, 0, 50,50); // image.getWidth(null),image.getHeight(null));
    		g.setColor(Color.red);
    		g.drawLine(x-3, y, x+3, y);
    		g.drawLine(x, y-3, x, y+3);
    		g.dispose();
     
    		response.setContentType("image/png");
    		OutputStream os = response.getOutputStream();
    		ImageIO.write(buffer, "png", os);
    		os.close();	    
    	}	
    }
    Pas contre comme je m'y attendais l'impression génère un pdf ou l'image est remplacée par une formule "<img ...." .

    Donc le générer le pdf, je pense a une solution en VBA sous Deski, avec l’évènement Before_refresh, dans laquelle je générerai les images avant l’exécution de la requête (ou peu être after_refresh), mes premiers tests semblent concluants.

    Noaie.

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/06/2013, 07h17
  2. Centrer une map Bing selon des coordonnées
    Par pra3t0r dans le forum Windows Phone
    Réponses: 2
    Dernier message: 06/06/2012, 11h27
  3. Découper une image selon des coordonnées
    Par Gloria_Im dans le forum Images
    Réponses: 2
    Dernier message: 20/04/2012, 12h54
  4. [C#] Centrer une image sur des coordonnées précises
    Par Towandaa dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 27/03/2012, 16h00
  5. Une infobulle à partir des coordonnées sur une image
    Par dark_vidor dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/01/2006, 21h20

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