Bilder "verstecken"!

Übersicht BlitzBasic Allgemein

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

Ironstorm

Erstklassiger Contest-Veranstalter

Betreff: Bilder "verstecken"!

BeitragFr, Dez 31, 2004 13:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi @ all!
Schonmal vorab Happy New Year Mr. Green ! Aber kommen wir zu meiner Frage. Bei solchen Spielen die auf CD sind oder so sieht man nie Bilder! Also diese Bilder die Später auch im Spiel zu sehen sind. Wie machen die das? Kann ich auch sowas machen? So als absicherung für die "kleinen", das sie nicht drauf rum malen *lol*! Please help me! THX im vorraus!
..:: blackbird design : blackbird photography : Futuro Verde : X-Commander ::..
MacBook | Intel Core 2 Duo 2,1 GHz | 2048 MB RAM | 80 GB HDD | Mac OS X 10.6.2 (Snow Leopard) | Adobe CS4 Design Premium

ProggerOrk

BeitragFr, Dez 31, 2004 13:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie wärs mit einen Tool das die Dateien in eine Datei ackt und verschlüsselt beispilsweise:

http://www.blitzbase.de/programme/datapack.htm

Dark Mania

BeitragFr, Dez 31, 2004 20:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Noch nie was von .pk3 oder .pak gehört? Da kann man zwar noch drauf zugreifen, aber die meisten sind schlichtweg zu dumm dafür Rolling Eyes

mfg, Dark Mania

WEBLink

BeitragMo, Jan 03, 2005 13:34
Antworten mit Zitat
Benutzer-Profile anzeigen
ProggerOrk hat Folgendes geschrieben:
Wie wärs mit einen Tool das die Dateien in eine Datei ackt und verschlüsselt beispilsweise:

http://www.blitzbase.de/programme/datapack.htm


Die Seite ist leider down, kann ir jemand das Progg schicken oder ne altanative anssagen?

ProggerOrk

BeitragMo, Jan 03, 2005 13:47
Antworten mit Zitat
Benutzer-Profile anzeigen
WEBLink hat Folgendes geschrieben:
ProggerOrk hat Folgendes geschrieben:
Wie wärs mit einen Tool das die Dateien in eine Datei ackt und verschlüsselt beispilsweise:

http://www.blitzbase.de/programme/datapack.htm


Die Seite ist leider down, kann ir jemand das Progg schicken oder ne altanative anssagen?


ups sorry...^^ aber das tool würde ich auch gerne haben=)
Aktuelles Spiel: Treasure Miner
Mehr Informationen unter:
http://www.pucupo-games.de

Bms

BeitragMo, Jan 03, 2005 14:39
Antworten mit Zitat
Benutzer-Profile anzeigen
alternativ könnte man das auch mit data, read und createimage lösen...
Reblonce (Jump + Run + Shoot - Game; 20 Levels): Download

dimaster

BeitragMo, Jan 03, 2005 15:44
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo,
wenn ihr euch noch für terabits packer interessiert habn link gefunden hier:
http://www.terabit.nildram.co.uk/PakMaker.zip

gruss dimaster

Spikespine

BeitragMo, Jan 03, 2005 16:34
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Bms
wie meinst du das?

Bms

BeitragMo, Jan 03, 2005 20:09
Antworten mit Zitat
Benutzer-Profile anzeigen
ich mach mal ein beispiel:

Code: [AUSKLAPPEN]

Graphics 640,480,32,1

Data 2,2 ;Breite und Höhe
Data 255,0,0, 0,128,0 ,0,255,100    ;RGB
Data 255,140,0, 255,0,0 ,0,255,150
Data 255,80,0, 0,128,0 ,0,255,180

;Breite und hoehe einlesen
Read br
Read ho
;Bild erzeugen
bild=CreateImage(br,ho)
SetBuffer ImageBuffer(bild)
;Farbwerte einlesen und punkte ins Bild malen
For count1=0 To br
 For count2=0 To ho
   Read r
   Read g
   Read b
   Color r,g,b
   Plot count1,count2
 Next
Next

;Bilid anzeigen
SetBuffer BackBuffer()
DrawImage bild,0,0
Flip
WaitKey
;Ende :)
End


es müsste sich eigentlich von selbst erklären. es ist zwar nicht sehr interressant, den ganzen tag nur zahlen zu schreiben, man könnte allerdings ein programm schreiben, das die Farbwerte eines Bildes einliest und das ganze in eine *.txt-Datei schreibt. dann nur noch markieren, kopieren, ins proggi einfügen, den obigen "Farbwerte-Auslese-Ins-Bild-Punkte-mal"- Teil einfügen, ein bisschen umändern und schon gehts.
[ich weis, dass das sau viel arbeit ist]
Reblonce (Jump + Run + Shoot - Game; 20 Levels): Download
 

David

BeitragMo, Jan 03, 2005 20:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Ach du sch***, das ist ja wohl die schlimmste Lösung die man nur machen kann... Shocked

grüße

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDi, Jan 04, 2005 1:38
Antworten mit Zitat
Benutzer-Profile anzeigen
@David : Wieso die schlimmste Lösung?

So schlimm ist das gar nicht mit den Data Zeilen!
Schlimm ist der Code von Bms(Plot), da es extrem langsam ist!

Meine neuste Version liest die Bilder aus Data Zeilen ca 20% schneller ein als von der Festplatte!

Gruß Ralf
[BB2D | BB3D | BB+]

joachim_neu

BeitragDi, Jan 04, 2005 1:47
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn ihr euch gegen richtige leutz "verteidigen" wollt, dann geht das schon, aber ich denke eine einfache XORung reicht da auch! is ja nix wichtiges, soll nur net von jedem gelesen werden!
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDi, Jan 04, 2005 2:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Da stimm ich die zu, das Xor ausreicht ist auch eine Variante!
Allerdings können da "die Kleinen Kinder drauf rummalen"
Wie oben schon geschrieben steht,
sind datapack und Pakmaker schon sehr gute Tools dafür!
Mit Datazeilen lassen sich zb Bitmapfonts sichern, da das kopieren sehr schwierig ist!
[BB2D | BB3D | BB+]

joachim_neu

BeitragDi, Jan 04, 2005 13:35
Antworten mit Zitat
Benutzer-Profile anzeigen
nö, wie sollen denn die darauf "rumkritzeln"???
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de

maximilian

BeitragDi, Jan 04, 2005 17:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Die wahrscheinlich beste Lösung: Ressource-Manager schreiben.

Ist doch einfach witzig, wenn es leidglich ein "media.res" gibt, das du deinem Spiel hinzufügen musst.

LordChaos
Variety is the spice of life. One day ignore people, next day annoy them.

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDi, Jan 04, 2005 18:03
Antworten mit Zitat
Benutzer-Profile anzeigen
@joachim_neu
Stimmt die Datei kann ja nicht geöffnet werden!
[BB2D | BB3D | BB+]

DivineDominion

BeitragDi, Jan 04, 2005 21:43
Antworten mit Zitat
Benutzer-Profile anzeigen
auf blitzbase steht doch was vom einfügen der mediendateien an die exe, oder nicht? binär an die exe hängen und - das gebe ich zu - etwas umständlicher auslesen.
christian.tietze@gmail.com - https://christiantietze.de
macOS

dimaster

BeitragDi, Jan 04, 2005 21:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Global package_exe$ ="c:\xxx.exe"
Global package_pass$="ExtremeHardCheese"
Global package_temp$=SystemProperty$("TEMPDIR")
Global package_data =CreateBank(0)
Global package_byte =CreateBank(0)
Global package_pos  =CreateBank(0)
Global package_count=0
Global package_size =0

Graphics 640,480,16,2

;---ACHTUNG BEISPIEL 1---
;package_addfile("c:\bild1.png")
;package_addfile("c:\bild2.png")
;package_attach()

;---ACHTUNG BEISPIEL 2---
;package_readinfo()
;img1=package_loadimage(1)
;img2=package_loadimage(2)
;DrawBlock img1,0,0
;DrawBlock img2,100,100

WaitKey()
FreeBank package_data
FreeBank package_byte
FreeBank package_pos
End





;---------------------------------------------------------------------
;Diese Funktion fügt eine Media-Datei zum Paket hinzu
;
;name: Beliebiger Dateiname
;---------------------------------------------------------------------
Function package_addfile(name$)
  file=ReadFile(name$)
  If file=0 Then
    RuntimeError name$+" wurde nicht gefunden"

  EndIf

  size=FileSize(name$)
  If size=0 Then
    CloseFile file
    RuntimeError name$+" ist nur 0 Byte groß"
  EndIf

  package_size=package_size+size
  package_count=package_count+1

  ResizeBank package_byte,package_count*4
  PokeInt package_byte,(package_count-1)*4,size

  ResizeBank package_pos,package_count*4
  PokeInt package_pos,(package_count-1)*4,package_size-size

  offset=BankSize(package_data)
  ResizeBank package_data,offset+size
  ReadBytes package_data,file,offset,size

  For n=1 To Len(package_pass$)
    key=Asc(Mid$(package_pass$,n,1))
    keystart=offset+n-1
    keyend=offset+size-1
    keystep=Len(package_pass$)-1
    For i=keystart To keyend
      byte=PeekByte(package_data,i)
      PokeByte package_data,i,byte Xor key
      i=i+keystep
    Next
  Next

  CloseFile file
End Function





;---------------------------------------------------------------------
;Diese Funktion hängt unser Paket an eine EXE-Datei an
;---------------------------------------------------------------------
Function package_attach()
  file=OpenFile(package_exe$)
  If file=0 Then
    RuntimeError package_exe$+" wurde nicht gefunden"
  EndIf

  If package_size=0 Then
    CloseFile file
    RuntimeError "Paket ist nur 0 Byte groß"
  EndIf

  offset=FileSize(package_exe$)
  SeekFile file,offset

  WriteBytes package_data,file,0,package_size
  WriteBytes package_byte,file,0,package_count*4
  WriteBytes package_pos ,file,0,package_count*4
  WriteInt file,package_size
  WriteInt file,package_count
  WriteInt file,$49414242

  CloseFile file
End Function





;---------------------------------------------------------------------
;Diese Funktion lädt Paket-Informationen aus einer EXE-Datei aus
;---------------------------------------------------------------------
Function package_readinfo()
  file=ReadFile(package_exe$)
  If file=0 Then
    RuntimeError package_exe$+" wurde nicht gefunden"
  EndIf

  exesize=FileSize(package_exe$)
  SeekFile file,exesize-4
  signature=ReadInt(file)
  If signature<>$49414242 Then
    RuntimeError package_exe$+" enthält keinen Anhang"
  EndIf

  SeekFile file,exesize-8
  package_count=ReadInt(file)
  ResizeBank package_byte,package_count*4
  ResizeBank package_pos,package_count*4

  SeekFile file,exesize-package_count*8-12
  ReadBytes package_byte,file,0,package_count*4
  ReadBytes package_pos,file,0,package_count*4
  package_size=ReadInt(file)

  CloseFile file
End Function





;---------------------------------------------------------------------
;Diese Funktion "entpackt" eine Datei aus einer EXE
;
;nr:   Nummer des Paketes (ab 1 bis max Dateien)
;kind: Ausgabedateityp    (ohne Pfad/Name - z.B. bmp,png,wav...)
;---------------------------------------------------------------------
Function package_exportfile(nr,kind$)
  If nr<1 Or nr>package_count Then RuntimeError "Paket "+Str$(nr)+" existiert nicht"

  file=ReadFile(package_exe$)
  If file=0 Then
    RuntimeError package_exe$+" wurde nicht gefunden"
  EndIf

  exesize=FileSize(package_exe$)
  pos=PeekInt(package_pos,nr*4-4)
  size=PeekInt(package_byte,nr*4-4)

  SeekFile file,exesize-package_count*8-12-package_size+pos
  ResizeBank package_data,size
  ReadBytes package_data,file,0,size
  CloseFile file

  For n=1 To Len(package_pass$)
    key=Asc(Mid$(package_pass$,n,1))
    keystart=n-1
    keyend=size-1
    keystep=Len(package_pass$)-1
    For i=keystart To keyend
      byte=PeekByte(package_data,i)
      PokeByte package_data,i,byte Xor key
      i=i+keystep
    Next
  Next

  If kind$<>"" Then kind$="."+kind$
  file=WriteFile(package_temp$+"out"+kind$)
  If file=0 Then Return
  WriteBytes package_data,file,0,size
  CloseFile file
End Function





;---------------------------------------------------------------------
;Diese Funktion lädt ein Bild aus einer EXE-Datei
;
;nr:     Nummer des Paketes   (ab 1 bis max Dateien)
;width:  Breite bei AnimImage (optional)
;height: Höhe   bei AnimImage (optional)
;count:  Anzahl bei AnimImage (optional)
;---------------------------------------------------------------------
Function package_loadimage(nr,width=0,height=0,count=0)
  package_exportfile(nr,"")
  If width>0 And height>0 And count>0 Then
    image=LoadAnimImage(package_temp$+"out",width,height,0,count)
  Else
    image=LoadImage(package_temp$+"out")
  EndIf
  DeleteFile package_temp$+"out"
  Return image
End Function


meinst du sowas?
ich weiss nicht obs geht habs nicht ausprobiert

gruss dimaster

Spikespine

BeitragMi, Jan 05, 2005 18:01
Antworten mit Zitat
Benutzer-Profile anzeigen
hey ich hab mal das von bms ausprobiert... es ist wirklich gut! Das einlesen der Bilder geht auf folgende Art und weise bis zu 4-mal schneller...
das mit den millisecs ist wegen der zeit, die ich gestoppt habe...

Code: [AUSKLAPPEN]

Graphics 800,600
start1 = MilliSecs()
Bild = LoadImage("Bild.jpg")
start2 = MilliSecs()
zeit1 = start2-start1

Bildneu = CreateImage(500,400)
Dim neuefarbe(500,400)

SetBuffer ImageBuffer(Bild)
LockBuffer ImageBuffer(Bild)
For x = 0 To 500
   For y = 0 To 400
      neuefarbe(x,y) = ReadPixelFast(x,y)
   Next
Next
UnlockBuffer ImageBuffer(Bild)

start3 = MilliSecs()
SetBuffer  ImageBuffer(Bildneu)
LockBuffer ImageBuffer(Bildneu)
For x = 0 To 500
   For y = 0 To 400
      WritePixelFast x,y, neuefarbe(x,y)
   Next
Next
UnlockBuffer ImageBuffer(Bildneu)
start4 = MilliSecs()
zeit2 = start4-start3

SetBuffer BackBuffer()
DrawImage Bildneu,0,0
Text 600,10,zeit1+"     -    "+zeit2
Flip

WaitKey


achja: für das spiel muss das feld "neuefarbe" irgendwo gespeichert werden. Danach kann man es auslesen.


[edit]
oh, ich nehms zurück mit dem Speichern. bei einem so großen bild steigen die Pixel ja ins unermessliche...

Mooch

Betreff: ...

BeitragDi, Feb 01, 2005 16:46
Antworten mit Zitat
Benutzer-Profile anzeigen
In Blitzedit ist ein Imagereader eingebaut und mit upx ists auch bei mehreren Bildern noch klein.
Nur das compilieren und packen dauert lange...
Pentium IV 3.0Ghz; nVidia Geforce 6800;
Microsoft Windows XP Home SP2; BlitzBasic 3D

.:: Sites ::.
.:: http://www.fl4sh-clan.de/ ::.


Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group