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

VB.NET Discussion :

Afficher une Image depuis un dossier quelque soit le chemin


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 30
    Points : 25
    Points
    25
    Par défaut Afficher une Image depuis un dossier quelque soit le chemin
    Bonjour à tous,

    Je suis à la recherche d'une idée pour faire afficher une image dans une picturebox, quelque soit le chemin d'installation de l'exécutable.

    En effet, sur mon appli, j'affiche le portrait d'un personnage enregistré dans ma base de donnée accès. Lorsqu'il n'y a pas de portrait, j'affiche une image vide.

    Mon probleme est que j'écrit le chemin d'accès à l'image que je souhaite afficher directement dans le code.

    Mais si j'installe mon exécutable sur un autre chemin, l'affichage des portraits ne sera pas possible.
    Existe -t il un moyen pour que quelque soit le chemin d'installation de l'exe, le programme puisse trouver le dossier contenant les images.

    Ci dessous, les quelques lignes de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Chemin_PortraitTextBox_TextChanged(sender As Object, e As EventArgs) Handles Chemin_PortraitTextBox.TextChanged
     
            If Chemin_PortraitTextBox.Text <> "" Then                                           'S'il n'y a pas de chemin pour l'image alors l'image par defaut est chioisi
            Me.PortraitPictureBox.Image = Image.FromFile(Me.Chemin_PortraitTextBox.Text)
            Else
                Me.PortraitPictureBox.Image = Image.FromFile("B:\VISUAL_BASIC_PROJET\Monarques\Portraits\Trone_Vide.jpg")
     
            End If
        End Sub
    Ci-dessous des lignes de code que j'ai essayé mais qui ne sont pas satisfaisantes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.PortraitPictureBox.Image = Image.FromFile(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyPictures) & "Monarques\Portraits\Trone_Vide.jpg"))
    Si quelqu'un pouvait me donner une idées ou une direction ou chercher...
    En vous remerciant par avance ;

    Cordiazlement.

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 676
    Points : 5 264
    Points
    5 264
    Par défaut
    Il existe des répertoires spécialisés pour ce genre de problématique.
    Par convention on utilisera soit :

    ProgramData/YourApplication
    Pour les données propre à l'application et donc communes à tous les utilisateur.
    Environment.SpecialFolder.CommonApplicationData.

    AppData/YourApplication
    Pour les données liés à un utilisateurs.
    Environment.SpecialFolder.ApplicationData.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 30
    Points : 25
    Points
    25
    Par défaut Afficher une Image depuis un dossier quelque soit le chemin
    Bonsoir Popo,

    Merci de votre retour.
    J'avait bien vu ces dossiers lors de mes recherches, mais cela fait que l'ensemble des photos vont être stockées sur C: \, alors que je souhaiterais que le sous-dossier "portraits" soit présent dans le dossier "Monarques" (titre et répertoire d'installation de mon appli. (Pas forcément sur C:\)

    Le but étant que mon appli aille chercher les portraits dans le répertoire d'installation de l'appli (i.e. B:\Monarques\Portraits).

    En attendant votre retour, je continue de chercher.

    Bonne soirée.
    Cordialement.

  4. #4
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 676
    Points : 5 264
    Points
    5 264
    Par défaut
    Pour obtenir le répertoire d'installation :
    Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location).

    Donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim exePath As String = Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location)
    Dim picturePath As String = Path.Combine(exePath, "Monarques", "Portraits")
    Mais en règle générale, on évite de créer des fichiers dans le répertoire d'installation puisque par définition, il est choisi par l'utilisateur et l'UAC peut en bloquer l'accès suivant le répertoire choisi.
    C'est pour cela qu'il est recommandé d'utilisé AppData ou ProgramData.

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 129
    Points : 1 639
    Points
    1 639
    Par défaut
    Je pense que ces fichiers seront créés à l'installation, donc l'installeur devrait avoir les droits de les y mettre.

    Après, fonctionnellement, l'image vide devrait aussi être présente dans la base (si personnage pas présent, alors on récupère l'image vide)
    Et je suppose que les chemins en base (si j'ai compris) sont eux aussi relatif à l'emplacement de l'exe ?

    Pour le chemin de l'executable, tu peux aussi regarder Application.StartupPath https://learn.microsoft.com/fr-fr/do...owsdesktop-7.0

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 30
    Points : 25
    Points
    25
    Par défaut Afficher une Image depuis un dossier quelque soit le chemin
    Bonjour Popo et Umfred;

    To Popo : Merci pour ce bout de code, que je n'ais trouvé nul part, lors de mes recherches.
    Je souhaite mettre le sous-dossier "Portraits" dans le répertoire d'installation "Monarque" pour éviter d'encombrer le disque C:\. (Souvent des SSD de faible capacité) et de plus cela permet de retrouver facilement les image affichées.

    To Umfred : Merci de votre retour. J'avais essayer (Application.StartupPath), mais je ne pense pas avoir trouvé la bonne solution. La base de donnée comme les portraits est également dans le répertoire de l'installation (Cette base risque d'être vite conséquente).

    De fait je vais prendre la réponse de Popo et continuer le développement.

    Merci encore à vous et bonne soirée.

    Cordialement.

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 129
    Points : 1 639
    Points
    1 639
    Par défaut
    Si des choses dans la base et le répertoire des photos (ou autres) doivent être modifiées par l'utilisateur via l'application alors effectivement, il vaudrait mieux que ces dossiers soient dans ProgramData comme l'a dit popo.

    Si c'est une application qui n'a pas forcément vocation à être installer (type application portable) alors le dossier peut-être placer à côté de l'exécutable et donc StartupPath sera, je pense, la meilleure option.

    On pourrait essayer de créer (puis supprimer) un fichier dans le répertoire de l'application et si ça échoue (gestion erreur création fichier), en déduire que les données sont dans ProgramData (vu que le répertoire de l'application n'est pas accessible en écriture); si pas d'erreur, alors les données sont sans doute à côté de l'application.

  8. #8
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 676
    Points : 5 264
    Points
    5 264
    Par défaut
    De toute façon, il manque une information importante dans cette histoire.

    Tu ne dis pas ce que sont ces images, leur types, leur tailles, leur nombre, si elles sont prédéfinies ou si elle sont importées par l'utilisateur.
    Les réponses à ces questions changent radicalement les pratiques à adopter.

Discussions similaires

  1. Afficher une image depuis un pointeur
    Par Lumbermatt dans le forum OpenCV
    Réponses: 1
    Dernier message: 04/07/2007, 16h28
  2. Afficher une image depuis un fichier
    Par Bourak dans le forum MFC
    Réponses: 1
    Dernier message: 23/06/2007, 15h01
  3. afficher une image depuis un combobox
    Par ghosthacker dans le forum MFC
    Réponses: 5
    Dernier message: 11/06/2007, 10h35
  4. Afficher une image depuis ma base de données MySQL
    Par hnoumbo dans le forum Outils
    Réponses: 3
    Dernier message: 16/08/2006, 08h57
  5. [Image] Afficher une image depuis serveur distant
    Par grinder59 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 17/05/2006, 09h45

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