Je fesais quelques manipulations sur les images quand un petit probleme est survenu. En gros je prends une image, et pour chaque pixel, j'augmente sa composante rouge de 20. Puis je prend la nouvelle image et j'enleve 20 à le constante rouge de chaque pixel. Donc normalement je devrais retomber sur l'image de départ et paf ! ca marche pas ! Voila le resultat:
image de départ:

ajout de rouge:

retour à l'image de depart:

vous voyez, sur la dernière image il y a quelques pixels qui sont completement rouge.
Voici le code que j'ai utilisé:
Code : Tout sélectionner
Procedure CryptImage(File.s)
If LoadImage(0, File)
If CreateImage(1, ImageWidth(0), ImageHeight(0), ImageDepth(0))
For x=0 To ImageWidth(0)-1
For y=0 To ImageHeight(0)-1
StartDrawing(ImageOutput(0))
Color = Point(x,y)
StopDrawing()
Red = Red(Color)
Red = Red+20
If Red > 255
Red = Red - 255
EndIf
StartDrawing(ImageOutput(1))
Plot(x,y,RGB(Red, Green(Color), Blue(Color)))
StopDrawing()
Next
Next
SaveImage(1, "test1.bmp")
EndIf
EndIf
EndProcedure
Procedure UncryptImage(File.s)
If LoadImage(0, File)
If CreateImage(1, ImageWidth(0), ImageHeight(0), ImageDepth(0))
For x=0 To ImageWidth(0)-1
For y=0 To ImageHeight(0)-1
StartDrawing(ImageOutput(0))
Color = Point(x,y)
StopDrawing()
Red = Red(Color)
Red = Red-20
If Red < 255
Red = Red+255
EndIf
StartDrawing(ImageOutput(1))
Plot(x,y,RGB(Red, Green(Color), Blue(Color)))
StopDrawing()
Next
Next
SaveImage(1, "test2.bmp")
EndIf
EndIf
EndProcedure
CryptImage("image.bmp")
UncryptImage("test1.bmp")
