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 :

Remplacer une image hébergée dans un répertoire Windows


Sujet :

VB.NET

  1. #1
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 316
    Points : 146
    Points
    146
    Par défaut Remplacer une image hébergée dans un répertoire Windows
    Bonjour,

    J'ai une application qui tourne sur une vintaine de TV (connectée a un serveur TSE) dispersée sur un site de production .
    On me demande d'afficher une image dans une Winform (jusque là tout va bien), mais le contenu de cette image doit changer chaque jour.
    Une personne devra mettre à jour cette image depuis son PC, hébergée sur un partage du réseau de l'entreprise, et l'application (sans qu'elle soit stoppée) devra prendre en charge l'image du jour.

    Le hic est que cette image (depuis l'application) devient une ressource qui n'est pas libre. Du coup, côté Windows, le fichier image ne peut être mis à jour ou remplacé ou même supprimé (TRY AGAIN).
    J'ai tenté d'initier un "diaporama" en me disant que l'application passant à l'image 2, laisserait l'image 1 disponible.; mais ce n'est pas le cas.

    Avez vous déjà rencontré cette problématique ?
    Merci pour votre aide.

  2. #2
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 316
    Points : 146
    Points
    146
    Par défaut
    Bonjour,

    Je suis toujours à la recherche d'une solution..
    Est ce que mon explication est clair ?

    Merci pour votre aide..

  3. #3
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Bonjour,

    Ce n'est effectivement pas très clair ...

    Peux-tu envoyer le code qui utilise l'image (son chargement, son affichage, ...).
    Je devine une contrainte : il faut pouvoir "arrêter" le programme (complètement ou au moins l'affichage de l'image), le temps de libérer l'image utilisée, faire les manipulations de son remplacement, et redémarrer le code. Cet arrêt-redémarrage ne devant durer que quelques millisecondes, ça ne devrait pas se voir sur les écrans.

    Peut-être qu'avec ton code sous les yeux, quelqu'un pourra t'aider ...

    Bonne journée,

  4. #4
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 316
    Points : 146
    Points
    146
    Par défaut
    J'ai trouvé une solution, maintenant je doit la tester.

    Je vais utiliser un fichier nommé WinCard.ON ou WinCard.OFF hébergé dans le même réperoire que la\les images à afficher.

    Au démarrage, j'affiche la première image avec un l'aide d'un Timer pour les afficher à tour de rôle.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      Private Sub TimPic_Tick(sender As Object, e As EventArgs) Handles TimPic.Tick
            DefilPicWinCard
        End Sub
    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
        Private Function DefilPicWinCard()
            imageNum = imageNum + 1
     
            If imageNum > 2 Then imageNum = 1
     
            Select Case imageNum
     
                Case 1
     
                    Try
                        If System.IO.Directory.Exists(BasePic & "\1.jpg") Then
                            PicImage.Image = My.Resources.fonf_noir
                        Else
     
                            PicImage.Image = Image.FromFile(BasePic & "\1.jpg")
     
                        End If
     
                    Catch ex As Exception
     
                    End Try
     
            End Select
    Un second Timer va tourner pour vérifier si le fichier nommé WinCard passe à ON ou OFF.
    Dans le cas du OFF, je stoppe le premier Timer et libére la\les images du "diaporama.

    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
            'Si le fichier WinCard.off existe 
            If My.Computer.FileSystem.FileExists(BasePic & "\WinCard.off").ToString() Then
     
                TimPic.Stop()
     
                'pour libérer le PICIMAGE le temps de renouveler la Win Card
                Try
     
                    If Me.RB_WinCardOFF.Checked Then
                        TimPic.Stop()
     
                        Me.PicImage.Image.Dispose()
                        PicImage.Image = Nothing
                        PicImage.Image = My.Resources.fonf_noir
     
                    End If
                Catch ex As Exception
     
                End Try
     
            ElseIf My.Computer.FileSystem.FileExists(BasePic & "\WinCard.off").ToString() Then
                DefilPicWinCard()
            End If
    Depuis ce point, il sera possible de modifier l'image.
    L'utilisateur repasse le WinCard à ON, le second TIMER voit à nouveau l'option à ON et donc réactive le diaporama.

  5. #5
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Le problème est donc résolu...
    Bravo

  6. #6
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 316
    Points : 146
    Points
    146
    Par défaut
    Pas tout à fait résolu.
    J'ai un souci de performance.
    A chaque TICK du timer, la RAM utilisée monte...

    Nom : RAM.jpg
Affichages : 62
Taille : 12,7 Ko

    Je dois libérer la ressource du picturebox à chaque TICK puis recharger l'image (ou non suivant le cas)..

  7. #7
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    L'impact sur le fonctionnement général doit être négligeable car, si je comprend bien ta description initiale, un Tick toutes les heures devrait être bien suffisant.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mettre à jour une image dans un style de listboxItem
    Par franckcl dans le forum Composants FMX
    Réponses: 8
    Dernier message: 20/02/2017, 12h05
  2. [Généralités] Mettre à jour une image mémo
    Par celeborn56 dans le forum WebDev
    Réponses: 2
    Dernier message: 16/01/2015, 14h25
  3. Mettre à jours une colonne CLOB dans une tabel
    Par proDZ dans le forum Oracle
    Réponses: 4
    Dernier message: 20/08/2009, 11h53
  4. afficher une image stockée dans un répertoire
    Par pigeon11 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 04/06/2009, 17h24
  5. Réponses: 6
    Dernier message: 23/09/2008, 15h57

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