Grafiken verschlüsseln?

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
<MeuchleR.>
Beiträge: 5
Registriert: 05.11.2005 12:20

Grafiken verschlüsseln?

Beitrag von <MeuchleR.> »

Hallöchen,

ich bin hier neu im Board und hab gleich schon mal eine Frage :).
Seit ein paar Tagen bin ich im Besitz von Purebasic ( ich habe vorher ein wenig mit Qbasic gearbeitet ), bin also noch ein blutiger Anfänger und arbeite mich seither in diverse Tutorials hinein - vorallem in die die sich mit Programmierung von 2D Spielen beschäftigen. Wie auch immer, man kann ja mit Hilfe des "LoadSprite(0,"x\x.x",0)"-Befehls Images laden lassen was so weit ja auch ganz schön ist. Das Problem ist nur das sich die zu ladenen Grafiken ja in einem Ordner befinden auf den so gut wieder jedermann Zugriff haben kann, sprich: es gibt keine Möglichkeit selbst kreierte Grafiken vor neurigen Augen zu schützen.
Nun möchte ich gerne von euch wissen ob es eine Möglichkeit gibt diese Grafiken bzw. den Ordner der sie enthält so geschickt zu verpacken bzw. zu verschlüsseln ( falls das mit Purebasic funktionieren sollte ) das der normale Laie keinen Zugriff auf sie erhalten kann.

Bin für jede Hilfe dankbar ;).

MfG
<M.>
Hanniball
Beiträge: 55
Registriert: 21.03.2005 17:40
Wohnort: Oranienbaum
Kontaktdaten:

Sprite einbauen

Beitrag von Hanniball »

Hi,

versuch es mal so:

Code: Alles auswählen

DataSection
    Pic: IncludeBinary "Sprite.bmp"
EndDatasection

CatchSprite(0, ?Pic)
Durch IncludeBinary wird die Bilddatei mit in die exe gepackt. Mit CatchSprite wird ab der Marke Pic das Bild übernommen. Dann brauchst Du es nach dem Compilieren nicht mehr im Ordner haben. Funktioniert auch bei CatchImage. Wenn Du JPEG oder so als Vorlage hast, brauchst Du vorher noch UseJPEGImageDecoder().
Grundsätzlich muss man aber sagen:Was auf dem Bildschirm erscheint, lässt sich auch klauen...
Gruss Hanniball
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Ich wollte an dieser Stelle auch nochmal darauf hinweisen, dass jeder, der dein Bild unbedingt haben will, einfach ein Screenshot von deinem Programm machen muss und er hat schon das Bild.
Allerdings könntest du dann einfach im Programm ein Text so über ds Bild klatschen, dass das Bild zwar noch gut aussieht, es sich aber nicht mehr lohnt, ein Screenshot zu machen.

Außerdem kannst du ja dabei schreiben, dass das Copyright bei dir liegt. So darf niemand das Bild benutzen, ohne dich vorher zu fragen (wenn du das auch noch dahinschreibst).

Aber das mit dem IncludeBinary sei nochmal kurz erläutert: Du benutzt einfach den Code oben. Das kannst du mit so vielen Bildern (und auch Musik, Sounds, eben alle Dateien) machen, wie du willst. Du musst nur statt Pic vor dem Doppelpunkt ein anderen "internen Dateinamen" verwenden. CatchImage() bereitet das Bild dann so für dich auf, dass du das Bild benutzen kannst, als sei es mit LoadSprite() geladen worden. Ebenso bereiten CatchImage(), CatchSound() und CatchMovie() die Daten enstrpechend auf...

Code: Alles auswählen

DataSection
MeinBild1:
IncludeBinary "relativer\oder\absoluter_pfad\zum_Bild.bmp"
EndDataSection 

DataSection
MeinBild2:
IncludeBinary "wasser.png"
EndDataSection

DataSection
GeileMucke:
IncludeBinary "musik.wav"
EndDataSection

CatchSound(0, ?GeileMucke)
CatchImage(0, ?MeinBild1)
CatchImage(1, ?MeinBild2)
DataSection und EndDataSection haben die Aufgabe, eine inkludierte Datei zu umschließen.
MeinBild und GeileMucke sind die "Adressen", unter der die Dateien später erreichbar sind.
IncludeBinary braucht nur noch den pfad und den Dateinamen für die Datei, die mit in die EXE-Datei aufgenommen werden soll.
Die Catchbefehle stellen dann die inkludierten Dateien bereit. Dazu musst du als 1. Parameter dien SpriteID oder SoundID oder welche ID auch immer angeben, unter der du das Element dann später ansprechen kannst, der 2. Parameter beginnt mit einem ?; es ist eine Sprunmarke und verweist auf den "internen Dateinamen", der vor jedem Includebefehl, gefolgt von einem :, steht.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
vonTurnundTaxis
Beiträge: 2130
Registriert: 06.10.2004 20:38
Wohnort: Bayreuth
Kontaktdaten:

Beitrag von vonTurnundTaxis »

AND51 hat geschrieben: Außerdem kannst du ja dabei schreiben, dass das Copyright bei dir liegt. So darf niemand das Bild benutzen, ohne dich vorher zu fragen (wenn du das auch noch dahinschreibst).
Und warum hier immer wieder "DataSection" und "EndDataSection"?
So ist es besser:

Code: Alles auswählen


DataSection
MeinBild1:
IncludeBinary "relativer\oder\absoluter_pfad\zum_Bild.bmp"

MeinBild2:
IncludeBinary "wasser.png"

GeileMucke:
IncludeBinary "musik.wav"
EndDataSection

CatchSound(0, ?GeileMucke)
CatchImage(0, ?MeinBild1)
CatchImage(1, ?MeinBild2)
AND51 hat geschrieben: DataSection und EndDataSection haben die Aufgabe, eine inkludierte Datei zu umschließen.
Eigentlich umschließen sie alle inkludierten Dateien.
Nicht durch Zorn, sondern durch Lachen tötet man
ClipGrab | Pastor - jetzt mit kurzen URLs!
Benutzeravatar
Green Snake
Beiträge: 1394
Registriert: 22.02.2005 19:08

Beitrag von Green Snake »

>CatchImage() bereitet das Bild dann so für dich auf, dass du das Bild
>benutzen kannst, als sei es mit LoadSprite() geladen worden

nicht ganz, wohl eher CatchSprite ;)
-.-"
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Wohl eher [c]LoadImage()[/c]. Man muss nicht immer gleich die Sprite-
befehle benutzen, wenn man mit einem Bild arbeiten möchte.
Bild
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag von KeyKon »

Oder du packst alle Bilder mit dem Packer in eine Datei, wobei vorsicht geboten ist, IrfanView zum beispiel kann immer das erste JPG Bild einlesen, warum auch immer.
Du kannst natürlich auch jedes Bild mit einer der in PB intigrierten Verschlüsselungsmethoden verschlüsseln.
Wenn es viele Bilder sind lohnt sich IncludeBinary nicht da das dann alles doppelt im Arbeitsspeicher hängt (einmal mit der Exe und einmal wenns geladen wurde)
Oder du machst dein eigenes Bildformat das nur dein Programm lesen kann. Ist allerdings nicht zu empfehlen da das dann meist recht groß und lahm ist.

KeyKon
(\/) (°,,,°) (\/)
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Green Snake und vonTurnundTaxis haben Recht, ich habe da im Eifer des Gefechts zwei Befehle miteinander vertauscht.

@ greeni: Ich wusste nicht, dass man mehere IncludeBinary-Befehle mit DataSection-Anweisungen umschließen kann. Wenn das so geht wie du gesagt hast, geht das natürlich auch!
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
vonTurnundTaxis
Beiträge: 2130
Registriert: 06.10.2004 20:38
Wohnort: Bayreuth
Kontaktdaten:

Beitrag von vonTurnundTaxis »

AND51 hat geschrieben:@ greeni: Ich wusste nicht, dass man mehere IncludeBinary-Befehle mit DataSection-Anweisungen umschließen kann. Wenn das so geht wie du gesagt hast, geht das natürlich auch!
Argh! Du hast mich mit Greensnake verwechselt! :bluescreen:
Nicht durch Zorn, sondern durch Lachen tötet man
ClipGrab | Pastor - jetzt mit kurzen URLs!
Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Beitrag von roherter »

DataSection
EnDatasection

Sowas Benutze ich gar nicht!

Ich schreibe meine Includes immer ans ende des Programms das geht auch!
Purebasic 5.0 32bit und 64 bit

I'm back from hell
Antworten