Code archives/File Utilities/Seq2Stripv1.0

This code has been declared by its author to be Public Domain code.

Download source code

Seq2Stripv1.0 by Russell2003
If you create an animation in, say, a 3D program that saves as individual files, this will assemble them all into one file to be used with LoadAnimImage().

It's very simple, but effective. Hope you find it useful!
Russell
Graphics 640,480,16,2
.Beginning
Cls
sImageSeq$ = Input$("Image sequence, minus index and extension. (ex: Pic NOT Pic000.bmp)")

.GetExt
sImageExt$ = Lower$(Input$("Input file type ( bmp, jpeg/jpg, or png ONLY)"))
If sImageExt$ <> "bmp" And sImageExt$ <> "jpg" And sImageExt$ <> "jpeg" And sImageExt$ <> "png" Then Goto GetExt
	
.GetDigits
iNumDigits = Input$("Number of digits (1-3 ONLY ex: 3 for Pic000, etc)")
If iNumDigits > 3 Then Goto GetDigits

.GetFrames
iTotFrames = Input$("Number of frames in sequence (1-" + 10^iNumDigits + ")")
If iTotFrames > (10^iNumDigits) Then Goto GetFrames
Print "Ready to process? Press any key to process..."
WaitKey()
sFileName$ = sImageSeq$ + String$("0",iNumDigits) + "." + sImageExt$
If FileType(sFileName$) = 0 Then
	Cls
	Print "File not found! Press any key..."
	WaitKey()
	Goto Beginning
EndIf

imgFirst = LoadImage(sFileName$)
testvalid = ImageWidth(imgFirst) * iTotFrames
If testvalid > 32000 Then
	Cls
	Print "Resulting image would be too big! (" + testvalid + " pixels wide" + ")"
	Print "Press any key..."
	WaitKey()
	Goto Beginning
EndIf
	
testvalid = ImageHeight(imgFirst)
If testvalid > 32000 Then
	Cls
	Print "Resulting image would be too big! (" + testvalid + " pixels wide" + ")"
	Print "Press any key..."
	WaitKey()
	Goto Beginning
EndIf

tmpBuffer = CreateImage( ImageWidth(imgFirst) * iTotFrames, ImageHeight(imgFirst) )
If Not tmpBuffer Then RuntimeError "Couldn't create buffer for image!"
Cls
Print "I will use " + sImageSeq$ + String$("0",iNumDigits) + "." + sImageExt$ + " as the first frame. Anykey..."
WaitKey()
SetBuffer ImageBuffer(tmpBuffer)
For i = 0 To (iTotFrames - 1)
	index$ = Str i
	index$ = RSet$(index$,iNumDigits)
	index$ = Replace$(index$," ","0")
	
	tmpImage = LoadImage(sImageSeq$ + index$ + "." + sImageExt$)
	DrawBlock tmpImage, x, 0
	x = x + ImageWidth(imgFirst)
	FreeImage tmpImage
Next

SaveImage(tmpBuffer, sImageSeq$ + ".bmp")
Cls
Print "Done! Saved as '" + sImageSeq$ + ".bmp'. Press any key for anim demo! (escape to quit)"
Print "Use up and down to speed up or slow down the frame rate"
WaitKey()

FreeImage tmpBuffer
AnimSequence = LoadAnimImage(sImageSeq$ + ".bmp", ImageWidth(imgFirst),ImageHeight(imgFirst),0,iTotFrames-1)
FreeImage imgFirst

While Not KeyDown(1)
	SetBuffer BackBuffer()
	Cls
	DrawImage AnimSequence, MouseX(), MouseY(), frame
	frame = frame + 1
	If frame = (iTotFrames - 1) Then frame = 0
	Delay iDelay
	
	If KeyDown(200) Then 
		iDelay = iDelay - 20
		If iDelay < 0 Then iDelay = 0
	Else If KeyDown(208) Then
		iDelay = iDelay + 20
	EndIf
	
	Flip
Wend
End

Comments

None.

Code Archives Forum