Probleme mit Saveimage

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

5k41

Betreff: Probleme mit Saveimage

BeitragSo, Apr 23, 2006 21:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!
Ich habe mir heute ein nettes Programm geschrieben, welches eine waffe, die man von oben gemal hat um 180 in einer AnimImage dreht und dann malt... das funktioniert auch alles doch nun wollte ich nicht jedesmal beim programm start das bild neu berechnen und dachte mir ich speichere es per Saveimage, doch statt einer animimage kommt nur ein schwarzer streifen raus... was man aber auch an der Programm sieht, das das Bild Korrekt gedreht ist. Desshalb nun meine Frage: Kann man SaveImage immer nur auch einzelne Frames einer Image anwenden (und wenn man nix angibt speichert er nur Frame 0) falls das so sein sollte hat noch irgendwer ne Idee wie ich das Problem lösen könnte? Hier der Quellcode (unoptimiert):
Code: [AUSKLAPPEN]

name$=Input("Name des Bildes:")

grund=LoadImage("GFX\"+name$+".bmp")
DrawImage grund,0,0
WaitKey()

If ImageWidth(grund)=>ImageHeight(grund)
 groesse=ImageWidth(grund)
Else
 groesse=ImageHeight(grund)
EndIf

waffe=CreateImage(groesse*2,groesse,180)

TFormFilter 0

For i=0 To -89 Step -1
 drehen=CopyImage(grund)
  HandleImage drehen,ImageWidth(drehen)/2,ImageHeight(drehen)
  RotateImage drehen,i
 
 SetBuffer ImageBuffer(waffe,90+i)
  DrawImage drehen,groesse,groesse
 
 SetBuffer BackBuffer()
 Text 0,0,-i
 Flip
 Cls

Next

For i=0 To 89
 drehen=CopyImage(grund)
  HandleImage drehen,ImageWidth(drehen)/2,ImageHeight(drehen)
  RotateImage drehen,i
 
 SetBuffer ImageBuffer(waffe,i+90)
  DrawImage drehen,groesse,groesse
 
 SetBuffer BackBuffer()
 Text 0,0,i+90
 Flip
 Cls

Next

If SaveImage(waffe,"GFX\"+name$+"2.bmp")=1 Then RuntimeError "SAVED!"

While Not KeyDown(1)

 DrawImage waffe,0,0,cr
 cr=cr+1
 If cr=180 Then cr=0

 Flip
 Cls

Wend

End

um zu sehen, das das Bild richtig gespeichert wurde einfach die saveimage-zeile auskommentieren!

MfG
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image
 

Satan 2001/2002

Betreff: Speichert alle Bilder

BeitragMo, Apr 24, 2006 15:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!

Es ist kein "animimage" geworden aber vielleicht hilft es dir trotzdem weiter.

Code: [AUSKLAPPEN]

name$=Input("Name des Bildes: ")

grund=LoadImage("GFX\"+name$+".bmp")

DrawImage grund,0,0
WaitKey()

If ImageWidth(grund)=>ImageHeight(grund)
 groesse=ImageWidth(grund)
Else
 groesse=ImageHeight(grund)
EndIf

waffe=CreateImage(groesse*2,groesse,180)

TFormFilter 0

For i=0 To -89 Step -1

 drehen=CopyImage(grund)
  HandleImage drehen,ImageWidth(drehen)/2,ImageHeight(drehen)
  RotateImage drehen,i
 
 SetBuffer ImageBuffer(waffe,90+i)
  DrawImage drehen,groesse,groesse
 
 SetBuffer BackBuffer()
 Cls
 Text 0,0,-i
 Flip

Next

For i=0 To 89

 drehen=CopyImage(grund)
  HandleImage drehen,ImageWidth(drehen)/2,ImageHeight(drehen)
  RotateImage drehen,i
 
 SetBuffer ImageBuffer(waffe,i+90)
  DrawImage drehen,groesse,groesse
 
 SetBuffer BackBuffer()
 Cls
 Text 0,0,i+90
 Flip

Next

;If SaveImage(waffe,"GFX\"+name$+"2.bmp")=1 Then RuntimeError "SAVED!"

While Not KeyDown(1)
 
 AppTitle "image: "+name$ +" ("+cr+"° )"

  ; Zeigt das Bild an       
  SetBuffer BackBuffer()
  Cls
  DrawImage waffe,0,0,cr 
  Flip

 SetBuffer ImageBuffer(waffe)
 Cls
 DrawImage waffe,0,0,cr
 Flip
 cr=cr+1
 
 If cr=180  Then cr=0

 If cr=0 And SaveImage(waffe,"GFX\"+name$+"2.bmp")=1 Then Goto done
 
; Speichert das letzte Bild.
;SaveImage(waffe,"GFX\"+name$+"2.bmp")

; Speichert alle 179 Bilder (ca. 12MB)
SaveImage(waffe,"GFX\"+name$+cr+".bmp")

Flip
Wend

.done
AppTitle "SAVED!"
WaitKey()

;ExecFile "GFX\"+name$+"2.bmp"
ExecFile "GFX"
End
Fr14-12-2001
Blitz3D v1.99

5k41

BeitragMo, Apr 24, 2006 17:30
Antworten mit Zitat
Benutzer-Profile anzeigen
ne tut mir leid hilft mir nicht soo wirklich weiter (so hätte ich das auch machen können) ich brauch aber eine animimage... gibt es da keine möglichkeit?

MfG
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image

Rone

BeitragDi, Apr 25, 2006 0:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
so gehts!

Code: [AUSKLAPPEN]

Graphics 640,480,16

grund=CreateImage(64,64)
SetBuffer ImageBuffer(grund)
Color 0,0,222
Rect 0,0,64,64

ClsColor 200,0,0
timer = MilliSecs()+30

zeilen = 19
spalten =19
frames = zeilen *spalten
img= Rotate(grund,zeilen,spalten);,"test2.bmp")

SetBuffer BackBuffer()

While Not KeyHit(1)=1
   Cls
   DrawImage img ,290,200,i
   If MilliSecs()>timer Then
      timer = MilliSecs()+10
      If KeyDown(205) Then
         i=i+1
         If i>frames-1 Then i=0
      ElseIf KeyDown(203) Then
         i=i-1
         If i<0 Then i=frames-1
      EndIf
   EndIf
   Flip
Wend
End

Function Rotate(grund,zeilen,spalten,Datei$="temp.bmp")
   size = ( ImageWidth(grund)^2 +ImageHeight(grund)^2 )^0.5 
   HandleImage(grund,ImageWidth(grund)/2 ,ImageHeight(grund)/2)
   neu2=CreateImage(size*spalten,size*zeilen)
   TFormFilter 0
   SetBuffer ImageBuffer(neu2)
   For ty=0 To zeilen-1
      For tx=0 To spalten-1
         bild=CopyImage(grund)
         RotateImage bild,Float(tx+spalten*ty)*(360.0/(spalten*zeilen))
         DrawImage bild,size/2+tx*size,(size/2)+size*ty
         FreeImage bild
      Next
   Next
   SaveBuffer (ImageBuffer(neu2),Datei$)   
   Return (LoadAnimImage(Datei$,size,size,0,spalten*zeilen))
End Function

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group