forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=13)
-   -   001,002,003...007 (http://forum.boolean.name/showthread.php?t=1977)

JVSh 23.11.2006 00:37

001,002,003...007
 
Всем привет... помогите с кодом!

В цикле нужно грузить имиджи из секвенции. Порядковые номера после имени идут с 001 до 050 (ну и до 100 и выше). Типа:

image_001.bmp
image_002.bmp
image_003.bmp
...................
image_052.bmp

Никак не соображу, как переменную в цикле подставлять, номер то не по порядку получается...:''((

Можно конечно проверку сделать до первого десятка и первой сотни, но может есть путь поизящнее?:super:

SubZer0 23.11.2006 01:08

Re: 001,002,003...007
 
делай названия файлов без нулей, так легче... и потом "image_"+str(i)+"bmp"... или можно процедуру дополнения нулями дописать... типа

на входе в i - номер файла, j - независимая и нигде не заюзенная переменная

s$="";
j=i
k=0
while j>0
j=int(j/10)
k=k+1;
wend

for j=1 to 3-k
s$=s$+"0"
next

и потом имя файла "image_"+s$+str(i)+"bmp"

(писал в броузере поэтому может не работать, но идея думаю ясна)

JVSh 23.11.2006 01:21

Re: 001,002,003...007
 
Спасибо!
Всё работает...

А переименовывать - муторно, тем более, что названия сгенерированы при рендеринге..

SubZer0 23.11.2006 03:29

Re: 001,002,003...007
 
еще можно как вариант

j=len(str(i))

for k=1 to 3-j
s$=s$+"0"
next

(c) Impersonalis

до меня чето не сразу дошел такой вариант... привык млин все через жопу писать :@

HolyDel 24.11.2006 02:48

Re: 001,002,003...007
 
2 SubZero
тогда уж:
j=Len(Str(i))
For k=1 To 3-j
s$=s$+"0"
Next
s$=s$+Str(i)

JVSh 24.11.2006 20:13

Re: 001,002,003...007
 
Спасибо всем за помощь.
Сделал код для склеивания в strip из image sequence
файлы в имени должны содержать порядковые номера от 001,002 и т.п
Может кому и пригодится:
Код:

;=================================
;= Evgeny Shatohin by JVS©2006 =
;= Create strip-animation texture for Blitz3D =
;=================================
; Help
; Enter text in field "Path\Folder" (optional).
; Enter text in field "Prefix name" (example - file name
; "sea_001.bmp" - field prefix "sea_" ).
; Enter text in field "Extension" (example -file name
; "sea_ooq.bmp" - field extension "bmp").
; Enter text i fields "Frame count", "Width Picture",
; "Height Picture".
; Enter text in fielf "Name New Image" - The file with
; such name is kept in a program directory.
;
; Heading "View Example" appears near to an example
; of the loaded picture.
;
; "Generate\Save" button - create and save new picture
; "New Create" button - clear all and start new project.
;=================================
Graphics3D 640,480,32,0
SetBuffer BackBuffer()
ClsColor 150,160,160
Global xsize,ysize,frame
Global inps=True
Global tex,terrx,fr=0,frc
Global dir$,nam$,ext$,saves$,stra$
Global font18,font20
Global CursPos=60
Global key
font18 = LoadFont("verdana", 18, 0, 0, 0)
SetFont font18
CreateNew()
.main
;================= Main Loop =====================
While Not KeyDown( 1 )
If fr<frame And frc=1 Then fr=MilliSecs()/50 Mod frame
key=GetKey()
If key Then KeyHits(key)
UpdateWorld
RenderWorld
DrawImages()
Flip
Wend
End
;============= Functions =================
Function SaveImages(dir$,nam$,ext$,saves$,frame,xsize,ysize)
terrx=CreateImage(xsize*frame,ysize)
SetBuffer ImageBuffer(terrx)
For i=1 To 40
s$=""
j=i
k=0
While j>0
j=Int(j/10)
k=k+1
Wend
For j=1 To 3-k
s$=s$+"0"
Next
texa=LoadImage(dir$+nam$+s$+Str(i)+"."+ext$)
ResizeImage texa,xsize,ysize
DrawImage texa,i*xsize-xsize,0
Next
SaveImage(terrx,saves$+".bmp")
SetBuffer BackBuffer()
FreeImage tex
tex=LoadAnimImage (saves$+".bmp",xsize,ysize,0,Int(frame))
ResizeImage tex,96,96
frc=1
End Function

Function DrawImages()
Color 200,210,210
c=0
For i=1 To 6
If i>3 Then c=125
Rect 300,20+i*40,250-c,25,1
Next
Rect 300,20+i*40,250,25,1
Rect 450,142+i*40,100,25,1
Rect 75,142+i*40,125,25,1
 
Color 50,60,60
Rect 5,5,630,470,0
Rect 8,8,624,464,0
 
Text 200,30,"Creator ANIMIMAGE ( JVSh©2006 )"
Text 80,60,"Path\Folders (optional)"
Text 80,100,"Prefix filename"
Text 80,140,"Extension"
Text 80,180,"Frame count"
Text 80,220,"Width picture"
Text 80,260,"Height picture"
Text 80,300,"Name New Image"
Text 80,425,"Generate\Save"
Text 455,425,"New Create"
If frc=1 Then Text 80,340,"View Example": Line 80,358,299,358: Color 50,60,60
 
Color 150,50,50
Text 305,60,dir$
Text 305,100,nam$
Text 305,140,ext$
Text 305,180,frame
Text 305,220,xsize
Text 305,260,ysize
Text 305,300,saves$
Color 50,60,60
 
For i=1 To 7
Line 80,38+i*40,299,38+i*40
Next
 
Rect 298,348,96+4,96+4,0
 
Color 150,50,50
If CursPos<320 Then Rect 295,CursPos,5,25,1
Color 50,60,60
TexFon()
DrawImage tex,300,350,fr
 
If MouseX()>450 And MouseY()>422 And MouseX()<500 And MouseY()<447
Color 255,255,255
Rect 450,422,100,25,1
Color 50,60,60
Text 455,425,"New Create"
If MouseHit(1)
CreateNew()
Color 50,60,60
EndIf
Else If MouseX()>75 And MouseY()>422 And MouseX()<200 And MouseY()<447
Color 255,255,255
Rect 75,422,125,25,1
Color 50,60,60
Text 80,425,"Generate\Save"
If MouseHit(1)
SaveImages(dir$,nam$,ext$,saves$,Int(frame),xsize,ysize)
EndIf
EndIf
Color 150,50,50
Text 305,CursPos,stra$

End Function

Function TexFon()
If frc=0
tex=CreateImage(96,96)
SetBuffer ImageBuffer(tex)
Color 200,210,210
Rect 0,0,96,96,1
For i=0To 96
cold=Rnd(150)
Color cold,cold,cold
Line 0,i,96,i
Next
SetBuffer BackBuffer()
ResizeImage tex,96,96
EndIf
End Function
Function CreateNew()
Cls
stra$=""
Color 200,210,210
c=0
For i=1 To 6
If i>3 Then c=125
Rect 300,20+i*40,250-c,25,1
Next
Rect 300,20+i*40,250,25,1
Rect 450,142+i*40,100,25,1
Rect 75,142+i*40,125,25,1
inps=1
CursPos=60
TexFon()
frc=0
fr=0
dir$=""
nam$=""
ext$=""
frame=""
xsize=""
ysize=""
saves$=""
Color 150,50,50
If CursPos<320 Then Rect 295,CursPos,5,25,1
 
End Function

Function KeyHits(key)
If inps=1
Color 150,50,50
If key=13
If CursPos=60 Then dir$=stra$ : stra$=""
If CursPos=100 Then nam$=stra$ : stra$=""
If CursPos=140 Then ext$=stra$ : stra$=""
If CursPos=180 Then frame=stra$ : stra$=""
If CursPos=220 Then xsize=stra$ : stra$=""
If CursPos=260 Then ysize=stra$ : stra$=""
If CursPos=300 Then saves$=stra$ : stra$="" : inps=False : CursPos=300: SaveImages(dir$,nam$,ext$,saves$,Int(frame),xsize,ysize)
CursPos= CursPos+40
Else If key>32
stra$=stra$+Chr$(key)
If CursPos=60 Then dir$=stra$
If CursPos=100 Then nam$=stra$
If CursPos=140 Then ext$=stra$
If CursPos=180 Then frame=stra$
If CursPos=220 Then xsize=stra$
If CursPos=260 Then ysize=stra$
If CursPos=300 Then saves$=stra$
EndIf
EndIf
Color 50,60,60
End Function



Часовой пояс GMT +4, время: 14:39.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot