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.
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.
Bonjour
tu peux effectuer de recheche sur le terme "Stéganographie" et "camouflage" sur g et tu auras plusieurs réponses sur sujet
A+
![]()
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]
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
Merci,
j'avance un peu, j'arrive à lire les données exif :
Mais je n'arrive pas à faire le contraire...
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)
j'ai écrit ça :
mais je bloque car :
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)
'System.Drawing.Imaging.PropertyItem.Private Sub New()' n'est pas accessible dans ce contexte, car il est 'Private'.
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
Malheureusument ça ne marche pas car la propriété à utiliser n'est pas Get mais Set.
J'ai essayé :mais j'obtiens l'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part pbxGeneral.Image.PropertyItems.SetValue(t, 37500)
..."System.IndexOutOfRangeException: L'index se trouve en dehors des limites du tableau.
je m'en rapproche mais ce n'est pas encore ça....
Re Bonjour,
Je continue à chercher mais je bloque...
Voici ce que j'ai trouvé sur la msdn2, mais ça ne marche pas :
En effet instance n'est pas instancié avec New...
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
Et il n'existe pas de constructeur New...Warning 1 Variable 'instance' is used before it has been assigned a value. A null reference exception could result at runtime.(VS2005)
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![]()
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...
Donc à priori il faut utiliser un item existant (37510) pour pouvoir en créer un autre...
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")
Merci Neguib...encore une fois![]()
Partager