Hier jedenfalls mal ein etwas komfortablerer Bildverschlüssler:
Code: Alles auswählen
#Pattern = "Bitmaps (*.bmp)|*.bmp|PortableNetworkGraphics (*.png)|*.png|Alle Dateien|*.*"
#SPattern = "Bitmaps (*.bmp)|*.bmp|PortableNetworkGraphics (*.png)|*.png"
Procedure Verschlusseln(FensterTitel.s, Abstand.l, Zeile.l, ProPlus.f)
Shared Prozent.f
For x=0 To ImageWidth()-1
If (x+Zeile) % Abstand = 0
StartDrawing(ImageOutput())
For y=0 To ImageHeight()-1
Color = Point(x,y)
Plot(x, y, Color ! Random($FFFFFF))
Next
StopDrawing()
EndIf
Prozent + ProPlus
SetWindowTitle(0, "(" + Str(Prozent) + "%) " + FensterTitel)
SetGadgetState(0, ImageID())
Repeat
Event = WindowEvent()
If Event = #PB_Event_Gadget And EventGadgetID() = 3
ProcedureReturn 0
EndIf
Until Event = 0
Next
ProcedureReturn 1
EndProcedure
Procedure SaveImageFile()
file.s = SaveFileRequester("Bild speichern...", "", #SPattern, 0)
If file <> ""
CopyImage(1, 0)
Plugin.l = SelectedFilePattern() * #PB_ImagePlugin_PNG
SaveImage(0, file, Plugin)
SetGadgetState(0, UseImage(1))
SetWindowTitle(0, GetFilePart(file) + " - Bildverschlüssler")
EndIf
EndProcedure
Procedure OpenImageFile(file.s)
If file = ""
file = OpenFileRequester("Bild laden...", "", #Pattern, 0)
EndIf
If file <> "" And LoadImage(0, file)
CopyImage(0, 1)
ResizeWindow(ImageWidth()+4, ImageHeight()+24)
If WindowWidth() < 310 :
ResizeWindow(310, ImageHeight()+24)
EndIf
SetGadgetState(0, UseImage(1))
SetWindowTitle(0, GetFilePart(file) + " - Bildverschlüssler")
Else
ProcedureReturn 0
EndIf
ProcedureReturn 1
EndProcedure
UsePNGImageDecoder()
UsePNGImageEncoder()
Datei.s = ProgramParameter()
OpenWindow(0, 10, 10, 100, 100, #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget, "<LEER>")
CreateGadgetList(WindowID(0))
ButtonGadget(1, 2, 2, 60, 18, "Öffnen")
ButtonGadget(2, 64, 2, 70, 18, "Speichern")
StringGadget(4, 136, 2, 100, 18, "", #PB_String_Password)
ButtonGadget(3, 236, 2, 50, 18, "Start")
ButtonGadget(5, 288, 2, 20, 18, "#", #PB_Button_Toggle)
StringGadget(6, 136, 2, 50, 18, "1", #PB_String_Numeric) : HideGadget(6, 1)
StringGadget(7, 188, 2, 48, 18, "1", #PB_String_Numeric) : HideGadget(7, 1)
ImageGadget (0, 2, 22, 96, 96, 0)
OpenImageFile(Datei)
Repeat
EventID = WindowEvent()
If EventID = #PB_Event_Gadget
Select EventGadgetID()
Case 1 ; Öffnen
OpenImageFile("")
Case 2 ; Speichern
SaveImageFile()
Case 3 ;Starten
SetGadgetText(3, "Stop!")
Title.s = GetWindowTitle(0)
CopyImage(0, 1)
Passwort.s = GetGadgetText(4)
If Len(Passwort) <= 4 : Passwort = "* <'||>-<" : EndIf
Jumping.f = (100 / Val(GetGadgetText(6)) / ImageWidth())
Prozent = 0
RandomSeed( CRC32Fingerprint(@Passwort, Len(Passwort)) )
For i=1 To Val(GetGadgetText(6))
If Verschlusseln(Title, Val(GetGadgetText(7)), i, Jumping) = 0
Break 1
EndIf
Next
SetGadgetText(3, "Start")
SetWindowTitle(0, Title)
Case 5 ;# = Einstellungen
M = GetGadgetState(5)
HideGadget(4, M)
HideGadget(6, 1-M)
HideGadget(7, 1-M)
For i=1 To 3
DisableGadget(i, M)
Next
EndSelect
EndIf
Until EventID = #PB_Event_CloseWindow
End
