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

Windows Forms Discussion :

[VB.NET] [VS2003] Ecrire dans un jpg


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté Avatar de toniolol
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2005
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 281
    Par défaut [VB.NET] [VS2003] Ecrire dans un jpg
    Bonjour,
    je me demande s'il est possible d'écrire des données cachées dans un fichier jpg sans que cela ne le corrompe.
    C'est pour pouvoir traiter une image avec un logiciel puis récupérer ce traitement dans un autre logiciel.
    Merci d'avance.

  2. #2
    Membre confirmé Avatar de layouni
    Inscrit en
    Mai 2004
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2004
    Messages : 119
    Par défaut Stéganographie et Camouflage
    Bonjour


    tu peux effectuer de recheche sur le terme "Stéganographie" et "camouflage" sur g et tu auras plusieurs réponses sur sujet


    A+

  3. #3
    Membre expérimenté Avatar de toniolol
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2005
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 281
    Par défaut Re: Stéganographie et Camouflage

    Merci de ta réponse mais je cherche quelque chose de super simple, rien n'étant confidentiel dans les données à transférer...
    Sinon je pensais sérialiser mon jpg dans un dataset si c'est possible pour écrire un fichier xml mais j'ai peur de la taille que je vais avoir...
    En fait j'aurai aimé un truc du genre écrire/lire dans les données exif.
    Je continue mes recherches.

    J'ai bien trouvé ImageFormat.Exif mais j'ai du mal à en comprendre le fonctionnement (surtout le guid !)
    En plus la propriété exif semble être en read Only.[/code]

  4. #4
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    Comme tu manipules des fichiers image je me demande si tu n'as pas interêt à manipuler les métadonnées de ce fichier
    GDI+ te le permet avec l'Espace de noms System.Drawing.Imaging
    et notamment la Classe PropertyItem

  5. #5
    Membre expérimenté Avatar de toniolol
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2005
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 281
    Par défaut
    Merci,
    j'avance un peu, j'arrive à lire les données exif :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      Dim propItem As System.Drawing.Imaging.PropertyItem = pbxGeneral.Image.GetPropertyItem(37510)
            Dim decode As New System.Text.ASCIIEncoding
            Dim sVal As String = decode.GetString(propItem.Value)
    Mais je n'arrive pas à faire le contraire...
    j'ai écrit ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     Dim s As String = "Essai d'encodage s=2X+5"
            Dim encode As New System.Text.ASCIIEncoding
            Dim t As Byte() = encode.GetBytes(s)
     
            Dim p As New System.Drawing.Imaging.PropertyItem
            With p
                .Id = 37
                .Len = t.Length
                .Value = t
            End With
            pbxGeneral.Image.SetPropertyItem(p)
    mais je bloque car :
    'System.Drawing.Imaging.PropertyItem.Private Sub New()' n'est pas accessible dans ce contexte, car il est 'Private'.

  6. #6
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    Méthode Image.GetPropertyItem
    afin de modifier directement
    Essayes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With pbxGeneral.Image.GetPropertyItem()
       .Id = 37 
       .Len = t.Length 
       .Value = t 
    End With

  7. #7
    Membre expérimenté Avatar de toniolol
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2005
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 281
    Par défaut
    Malheureusument ça ne marche pas car la propriété à utiliser n'est pas Get mais Set.

    J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pbxGeneral.Image.PropertyItems.SetValue(t, 37500)
    mais j'obtiens l'erreur :
    "System.IndexOutOfRangeException: L'index se trouve en dehors des limites du tableau.
    ...
    je m'en rapproche mais ce n'est pas encore ça....

  8. #8
    Membre expérimenté Avatar de toniolol
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2005
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 281
    Par défaut
    Re Bonjour,
    Je continue à chercher mais je bloque...
    Voici ce que j'ai trouvé sur la msdn2, mais ça ne marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim instance As PropertyItem
    Dim value As Integer
    value = instance.Id
    instance.Id = value
    En effet instance n'est pas instancié avec New...
    Warning 1 Variable 'instance' is used before it has been assigned a value. A null reference exception could result at runtime.(VS2005)
    Et il n'existe pas de constructeur New...

  9. #9
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    Bien sûr cette instance tu la récupères par exemple de Image.GetPropertyItem comme je te l'ai déjà ecrit mais tu m'a répondu "çà marche pas "sans en dire vraiment plus

  10. #10
    Membre expérimenté Avatar de toniolol
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2005
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 281
    Par défaut
    Ok
    désolé je n'avais rien compris....
    c'est .
    Voici ce que j'ai fait, je ne sais pas si c'est du très propre mais ça tourne...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim img As New Bitmap("img1.jpg")
    Dim s As String = "Essai d'encodage s=2X+5"
    Dim encode As New System.Text.ASCIIEncoding
    Dim t As Byte() = encode.GetBytes(s)
    Dim propItem As System.Drawing.Imaging.PropertyItem = img.GetPropertyItem(37510)
    With propItem
       .Id = 99
       .Len = t.Length
       .Type = 2
       .Value = t
    End With
    img.SetPropertyItem(propItem)
    img.Save("img2.jpg")
    Donc à priori il faut utiliser un item existant (37510) pour pouvoir en créer un autre...
    Merci Neguib...encore une fois

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

Discussions similaires

  1. [VB.Net] Comment écrire dans un fichier texte ?
    Par Toto70 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 12/07/2006, 14h48
  2. [VB.Net] Comment ecrire dans un MemoryStream
    Par vijeo dans le forum Windows Forms
    Réponses: 8
    Dernier message: 28/04/2006, 14h28
  3. Réponses: 2
    Dernier message: 27/04/2006, 15h22
  4. <xml><asp.net> Ecrire dans un fichier xml
    Par kenkine dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 24/03/2006, 11h17
  5. [VB.NET] Ecrire dans un fichier texte...
    Par robert.michel9 dans le forum VB.NET
    Réponses: 5
    Dernier message: 04/12/2005, 14h35

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