badmike95
Messages postés45Date d'inscriptionvendredi 18 novembre 2005StatutMembreDernière intervention20 mai 2012
-
20 sept. 2008 à 17:42
badmike95
Messages postés45Date d'inscriptionvendredi 18 novembre 2005StatutMembreDernière intervention20 mai 2012
-
21 sept. 2008 à 17:16
Salut,
Actuellement je charge mes images avec la librairie de PaintX.dll de sorte à faire ceci :
Public Function LoadPNG(filename As String) As StdPicture
Dim PictureDecoder As New PAINTXLib.PictureDecoder
Set LoadPNG = PictureDecoder.LoadPicture(filename)
End Function
Il me suffit juste ensuite de faire appel à cet fonction de sorte à ce que je puisse ensuite "exploiter" mes images :
Dim Img As StdPicture
Set Img = LoadPNG(filename)
Jusqu'ici pas de problème, cependant maintenant j'ai crypté mes images de façon à ce qu'ils soient illisibles et la seul manière pour que cette fonction fonctionne toujours c'est que mes fichiers soient décryptés sur le DD, ce que je ne veux vraiment pas faire car une fois que les fichiers décryptés sont écrites sur le DD, il y a forcément une solution pour les récupérer.
Actuellement j'arrive à décrypter mes images dans un tableau de byte et ensuite à convertir ces données en image de type StdPicture mais voila,étant donné que je suis obligé de passer par cette fonction (LoadPNG) je suis bloqué.
Dans ma situation, exisiterait-il une manière à ce que je puisse "décoder" mes images de la même manière que la librairie paintx ?
----
Pour infos, voila comment je transforme mon tableau de byte en type image :
Private Declare Function CreateStreamOnHGlobal Lib "ole32.dll" (ByVal hGlobal As Long, ByVal fDeleteOnRelease As Long, lpIStream As IUnknown) As Long
Private Declare Function OleLoadPicture Lib "oleaut32.dll" (ByVal lpStream As IUnknown, ByVal lSize As Long, ByVal fRunmode As Long, riid As Any, lpIPicture As IPicture) As Long
Public Function BytesToPicture(PictureData() As Byte) As StdPicture
Dim IID_IPicture(3) As Long
Dim oPicture As IPicture
Dim nResult As Long
Dim oStream As IUnknown
Dim hGlobal As Long
Call CreateStreamOnHGlobal(VarPtr(PictureData(LBound(PictureData))), 0, oStream)
nResult = OleLoadPicture(oStream, 0, 0, IID_IPicture(0), oPicture)
If nResult = 0 Then
Set BytesToPicture = oPicture
End If
End Function
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 21 sept. 2008 à 04:19
salut,
euh... et quel est le problème?
avant tu faisais :
Dim Img As StdPicture
Set Img = LoadPNG(filename)
ce qui ne te convient plus car tu passes maintenant par un tableau de bytes au lieu directement du fichier
et tu as une fonction qui fait bytes vers std
donc quel est le problème?
Dim Img As New StdPicture
Set Img = BytesToPicture(TonTableauDeByte())
où est-ce que çà coince?
<hr size="2" width="100%" />Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
badmike95
Messages postés45Date d'inscriptionvendredi 18 novembre 2005StatutMembreDernière intervention20 mai 2012 21 sept. 2008 à 11:58
Salut, merci de ta réponse.
Bah le problème c'est que je ne peux rien faire avec, tous semble fonctionner très bien mais impossible de faire Img.Height, Img.Handle [...] sans que l'erreur 91 (Variable objet ou variable bloc With non définie) apparaisse. En gros sa marche mais après pour exploiter l'image sa plante toujours.
Avant l'image était chargé de cette manière :
Public Function LoadPNG(filename As String) As StdPicture
Dim PictureDecoder As New PAINTXLib.PictureDecoder
Set LoadPNG = PictureDecoder.LoadPicture(filename)
End Function
Et je me demande si ce n'est pas parce que je ne "décode" pas l'image de cette manière que sa plante. Car moi je passe juste de bytes vers std et il semble manquer quelque chose pour faire ce que je veux faire (Img.Height, Img.Handle etc...).
badmike95
Messages postés45Date d'inscriptionvendredi 18 novembre 2005StatutMembreDernière intervention20 mai 2012 21 sept. 2008 à 17:16
Ah oui effectivement, j'ai oublié de mettre un New... Et voila d'où venait le problème ^^' J'aurais jamais pensé à ça sur le coup..
Merci ! J'aurais certainement passé encore passé des heures, voir des jours à chercher alors que le problème était sous mes yeux.
Bon maintenant il me reste juste à voir comment faire pareille mais pour les fichiers PNG. Encore merci =)