
imaginez que j'ai un BMP que je crypte pixel par pixel. Puis-je le decrypter a l'ecran sans que cette image decrypté passe sur le diskdur ?
Code : Tout sélectionner
Procedure CopyImageToMemory(ImageNumber, Memory)
Protected TemporaryDC, TemporaryBitmap.BITMAP, TemporaryBitmapInfo.BITMAPINFO
TemporaryDC = CreateDC_("DISPLAY", #Null, #Null, #Null)
GetObject_(ImageID(ImageNumber), SizeOf(BITMAP), TemporaryBitmap.BITMAP)
TemporaryBitmapInfo\bmiHeader\biSize = SizeOf(BITMAPINFOHEADER)
TemporaryBitmapInfo\bmiHeader\biWidth = TemporaryBitmap\bmWidth
TemporaryBitmapInfo\bmiHeader\biHeight = -TemporaryBitmap\bmHeight
TemporaryBitmapInfo\bmiHeader\biPlanes = 1
TemporaryBitmapInfo\bmiHeader\biBitCount = 32
TemporaryBitmapInfo\bmiHeader\biCompression = #BI_RGB
GetDIBits_(TemporaryDC, ImageID(ImageNumber), 0, TemporaryBitmap\bmHeight, Memory, TemporaryBitmapInfo, #DIB_RGB_COLORS)
DeleteDC_(TemporaryDC)
EndProcedure
Procedure CopyMemoryToImage(Memory, ImageNumber)
Protected TemporaryDC, TemporaryBitmap.BITMAP, TemporaryBitmapInfo.BITMAPINFO
TemporaryDC = CreateDC_("DISPLAY", #Null, #Null, #Null)
GetObject_(ImageID(ImageNumber), SizeOf(BITMAP), TemporaryBitmap.BITMAP)
TemporaryBitmapInfo\bmiHeader\biSize = SizeOf(BITMAPINFOHEADER)
TemporaryBitmapInfo\bmiHeader\biWidth = TemporaryBitmap\bmWidth
TemporaryBitmapInfo\bmiHeader\biHeight = -TemporaryBitmap\bmHeight
TemporaryBitmapInfo\bmiHeader\biPlanes = 1
TemporaryBitmapInfo\bmiHeader\biBitCount = 32
TemporaryBitmapInfo\bmiHeader\biCompression = #BI_RGB
SetDIBits_(TemporaryDC, ImageID(ImageNumber), 0, TemporaryBitmap\bmHeight, Memory, TemporaryBitmapInfo, #DIB_RGB_COLORS)
DeleteDC_(TemporaryDC)
EndProcedure
oui avec un catchsprite() /cathimage() voir docSPH a écrit :raaaa, je ne le retrouve pas. Je vais l'expliquer, vous allez voir ce que je veux dire :
On reserve un espace memoire de la taille du fichier image. Puis on envoie les donnees de l'image dans la zone memoire. Je cherche ce code (mais je ne pige rien aux pointeurs alors...)
Et par dessus tout ca, ma question est : peut on envoyer la zone memoire dans la zone memoire graphique ?
Code : Tout sélectionner
UseJPEGImageDecoder()
file$ = OpenFileRequester("Sélectionnez un fichier","","JPG (.jpg)|*.jpg|All files (*.*)|*.*",0)
If file$
If ReadFile(0, file$)
length = Lof(0) ; Lit la taille en octets du fichier
*MemoryID = AllocateMemory(length) ; alloue un bloc mémoire de la taille du fichier
If *MemoryID
bytes = ReadData(0, *MemoryID, length) ; Lit les données du fichier et les place dans le bloc mémoire
EndIf
CloseFile(0)
EndIf
EndIf
Resultat = CatchImage(0, *MemoryID, length)
Debug result
Resul at ?SPH a écrit : Debug result
M****. Merci de m'avoir eclairé. J'y etais alors ?falsam a écrit :Resul at ?SPH a écrit : Debug result
D'aprés ce code ça fonctionneSPH a écrit :M****. Merci de m'avoir eclairé. J'y etais alors ?
Code : Tout sélectionner
UseJPEGImageDecoder()
file$ = OpenFileRequester("Sélectionnez un fichier","","JPG (.jpg)|*.jpg|All files (*.*)|*.*",0)
If file$
If ReadFile(0, file$)
length = Lof(0) ; Lit la taille en octets du fichier
*MemoryID = AllocateMemory(length) ; alloue un bloc mémoire de la taille du fichier
If *MemoryID
bytes = ReadData(0, *MemoryID, length) ; Lit les données du fichier et les place dans le bloc mémoire
EndIf
CloseFile(0)
EndIf
EndIf
Resultat = CatchImage(0, *MemoryID, length)
Debug resultat
OpenWindow(0, 0, 0, 500, 500, "Resultat de ma selection", #PB_Window_SystemMenu)
ImageGadget(#PB_Any, 10,20,300,400,ImageID(0))
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
Code : Tout sélectionner
UseJPEGImageDecoder()
file$ = OpenFileRequester("Sélectionnez un fichier","","JPG (.jpg)|*.jpg|All files (*.*)|*.*",0)
If file$
If ReadFile(0, file$)
length = Lof(0) ; Lit la taille en octets du fichier
*MemoryID = AllocateMemory(length) ; alloue un bloc mémoire de la taille du fichier
If *MemoryID
bytes = ReadData(0, *MemoryID, length) ; Lit les données du fichier et les place dans le bloc mémoire
EndIf
CloseFile(0)
EndIf
EndIf
Resultat = CatchImage(0, *MemoryID, length)
;Debug resultat
OpenWindow(0, 0, 0, ImageWidth(0), ImageHeight(0), "Resultat de ma selection", #PB_Window_SystemMenu)
ImageGadget(#PB_Any, 0,0,300,200,ImageID(0))
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
Doc Pure Basic a écrit : La hauteur et la largeur du gadget s'ajustent automatiquement à la taille de l'image (les paramètres Largeur et Hauteur sont donc actuellement sans effet).
Remplace :SPH a écrit :Juste un truc : pourquoi ImageGadget(#PB_Any, 0,0,300,200,ImageID(0)) ne force pas l'image a 300*200 ?
Code : Tout sélectionner
UseJPEGImageDecoder()
file$ = OpenFileRequester("Sélectionnez un fichier","","JPG (.jpg)|*.jpg|All files (*.*)|*.*",0)
If file$
If ReadFile(0, file$)
length = Lof(0) ; Lit la taille en octets du fichier
*MemoryID = AllocateMemory(length) ; alloue un bloc mémoire de la taille du fichier
If *MemoryID
bytes = ReadData(0, *MemoryID, length) ; Lit les données du fichier et les place dans le bloc mémoire
EndIf
CloseFile(0)
EndIf
EndIf
Resultat = CatchImage(0, *MemoryID, length)
;Debug resultat
OpenWindow(0, 0, 0, ImageWidth(0), ImageHeight(0), "Resultat de ma selection", #PB_Window_SystemMenu)
ImageGadget(#PB_Any, 0,0,300,200,ImageID(0))
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
Code : Tout sélectionner
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
EndSelect
ForEver